我试图用一个空白替换多个空格。用C中的getchar()函数挣扎
#include <stdio.h>
#include <stdlib.h>
#define MAXLINE 500
main() {
char text[MAXLINE];
int i;
for(i = 0; (text[i] = getchar()) != EOF && text[i] != 'x'; i++) {
if(text[i] == ' ')
i++;
while((text[i] = getchar()) != EOF && text[i] != 'x' && text[i] == ' ');
if(text[i] == EOF || text[i] == 'x')
break;
}
text[i] = '\0';
printf("\n\n-- Result --\n%s", text);
}
我知道getchar()
需要一个字符enter
按下该按钮之后,但我已经见过很多次,人们如何使用它,直到EOF
发现让整个字符串。即使在这个例子中,如果我注释掉while
循环(如果我写一个没有空白的单词,我会得到一个正确的字符串),它就可以工作。我想要的是将一个人写入数组中的每个字符。在这种情况下,getchar()
功能可以使用吗?如果是的话,我需要在这段代码中进行修改才能使它工作,因为现在它只打印一些字符(如果while
循环未被注释掉)?正如我所说,如果我写一个字apple
或类似的没有任何空白和没有while
循环,它的工作原理。
请注意'main()'应该(必须)返回'int'。你应该测试溢出('我
Kninnug
谢谢。一旦我完成了目前的问题,我会解决这些问题。 – Stein
还要注意'getchar()',尽管它是非常通信的名称,[不会*返回一个'char'](http://linux.die.net/man/3/getchar)(因为'EOF'确实不适合字符)。 – unwind