C 将一个或多个空格的每个字符串替换为一个空格
这已经被问到了,但是我自己做了一个程序,我不知道为什么它不起作用C 将一个或多个空格的每个字符串替换为一个空格,c,getchar,putchar,C,Getchar,Putchar,这已经被问到了,但是我自己做了一个程序,我不知道为什么它不起作用 int c; char blank; while ((c = getchar()) != EOF) { if (c == ' ') { putchar(c); while ((c = getchar()) == ' ') { putchar(''); } } putchar(c); } 基本上,我所做的就是用空来代替空间。但它不起
int c;
char blank;
while ((c = getchar()) != EOF) {
if (c == ' ') {
putchar(c);
while ((c = getchar()) == ' ') {
putchar('');
}
}
putchar(c);
}
基本上,我所做的就是用空来代替空间。但它不起作用。如果我将“1”替换为“1”,它将用1替换空格,因此我不知道问题出在哪里代码中的具体错误在于您使用
putchar()
函数的方式。使用putchar()
时,必须在其中放入字符,例如putchar('a')
,但不能将其保留为空。这就是您收到错误的原因:
错误:空字符常量
基本上,putchar()
必须放一个字符,而单引号之间的任何东西:'
,都不是字符
要修复代码:您应该完全删除putchar(“”)
行,因此您的代码如下所示:
while ((c = getchar()) != EOF) {
if (c == ' ') {
putchar(c);
while ((c = getchar()) == ' ') {
}
}
putchar(c);
}
#我想建议我的代码:
int c,nb=0;
while((c=getchar())!=EOF){
if(c==' '){
++nb;
if(nb>1){
continue;
}
putchar(c);
}
if(c!=' '){
nb=0;
putchar(c);
}
}
您希望
putchar(“”)
做什么<代码>'不是有效的字符常量。如果不想输出任何内容,只需什么都不做。如果不想输出字符,根本不要调用putchar()
。另外一个问题:循环中的第二个getchar
也可以返回EOF
,因此,您可能必须跳过条件if
块之后的putchar
。有趣的事实是:整个程序可以简化为一行,空for
循环<代码>用于(char s[99];scanf(“%s”,s)=1;printf(“%s”,s))Nice solution@davide虽然这也会从inputCorner中删除换行符:如果输入以x
结尾,代码将尝试打印'x'
,'
,EOF
。欢迎使用堆栈溢出。没有任何解释的代码很少有帮助。堆栈溢出是关于学习,而不是提供盲目复制和粘贴的代码片段。请编辑您的问题并解释它如何回答所问的特定问题。看见