【发布时间】:2018-04-14 22:03:09
【问题描述】:
这个程序应该用 x 替换两个空格,只使用 getchar() 和 putchar()。我的方法是将空间存储在缓冲区中,然后将其打印出来。但是程序用 x 替换了每个空格。有人可以帮帮我吗?
#include <stdio.h>
#define MAX 2
char arr[MAX];
int ret = 0;
char second;
int main()
{
for(int i=0; ; )
{
if ( (ret = getchar())!= EOF)
{
putchar(ret);
}
if(ret==' '&&second==' ')
{
arr[i]=ret;
arr[i]='x';
putchar(arr[i]);
}
}
return 0;
}
【问题讨论】:
-
您需要为数组添加另一个索引变量,否则使用
i进行索引会留下空白。请注意arr[i]='x';会覆盖arr[i]=ret; -
索引 i 存储,例如索引 r 输出?
-
我认为您的代码会打印出输入的每个字符,并且在每个空格后打印一个“x”。并且永远不会离开输入循环。
-
如果你有一个单字符的缓冲区,它不需要是一个数组。您可以再声明一个变量。 (虽然我不知道你会用它做什么。)
-
@arndt 是的,这就是它的作用,但如果输入是 a a 将是 xa 并且应该是 axa
标签: c arrays for-loop if-statement