C 什么';在这个程序中删除多余的空格是错误的吗?

C 什么';在这个程序中删除多余的空格是错误的吗?,c,C,我试图写一个程序来消除额外的间距。但它从未返回所需的输出。我能知道这里出了什么问题以及如何纠正它吗 #include<stdio.h> main() { char strin[150]; int n,i; printf("Number of words : "); scanf("%d",&n); printf("Enter Input: "); for(i=0;i&l

我试图写一个程序来消除额外的间距。但它从未返回所需的输出。我能知道这里出了什么问题以及如何纠正它吗

#include<stdio.h>

main()
{
    char strin[150];
    int n,i;
    printf("Number of words : ");
    scanf("%d",&n);
    printf("Enter Input: ");
    for(i=0;i<n;i++)
    {
        scanf("%c",&strin[i]);

    }
    for(i=0;i<n;i++)
    {
        if(strin[i]==" ")
            continue;
        else
            printf("%c",strin[i]);
    }
}
#包括
main()
{
charstrin[150];
int n,i;
printf(“字数:”);
scanf(“%d”和“&n”);
printf(“输入:”);

对于(i=0;i使用
''
而不是
''
检查单个字符


使用
strcmp()
检查多个字符或整个字符串

使用
'
而不是
'
检查单个字符


使用
strcmp()
检查多个字符或整个字符串

如果要删除字符串中的所有空格并将其存储,而不仅仅是打印,则可以使用以下简单功能:

void rmspaces(char *str)
{
    const char *dup = str;
    do {
        while (isspace(*dup)) {
            ++dup;
        }
    } while (*str++ = *dup++);
}
然后可以像这样调用函数:

rmspaces(str);

如果要删除字符串中的所有空格并将其存储,而不是仅打印,可以使用以下简单函数:

void rmspaces(char *str)
{
    const char *dup = str;
    do {
        while (isspace(*dup)) {
            ++dup;
        }
    } while (*str++ = *dup++);
}
然后可以像这样调用函数:

rmspaces(str);

在处理字符串时,您绝对需要考虑终止
'\0'
!您要求“字数”…但是
n
,查看代码,表示字符数。建议:打开编译器可以产生的最大警告。使用
if(strin[i]='')
删除了输入中的所有空格和任何空格。现在,我如何在它们之间只添加一个空格?使用调用为
gcc-Wall-Wextra-g augustus.C-o augustus prog
的函数编译上面的C代码
augustus.C
。您应该会收到许多警告。改进
augustus.C
以不添加空格。然后使用调试器了解行为在处理字符串时,您绝对需要考虑终止
'\0'
!您要求“字数”…但是
n
,查看代码,表示字符数。建议:打开,记住编译器可以产生的最大警告。使用
if(strin[i]='')
删除了输入中的所有空格和任何空格。现在,我如何在它们之间只添加一个空格?使用调用为
gcc-Wall-Wextra-g augustus.C-o augustus prog
的函数编译上面的C代码
augustus.C
。您应该会收到许多警告。改进
augustus.C
以不添加空格。然后使用调试器了解行为你的节目是什么