【发布时间】:2018-09-11 15:07:17
【问题描述】:
所以我的程序应该从用户那里获取输入并将其存储在一个数组中。之后,如果输入字符串连续包含三个“a”,则应将其替换为单个“*”。但是我似乎无法正确处理。它仅将第一个 a 替换为 *。我尝试将以下 2 a 替换为空白,但输出看起来很有趣。
对于这个练习,我必须使用 putchar() 和 getchar()。
提前谢谢你。
#include <stdio.h>
char c;
char buffer[256];
int counter= 0;
int i;
int main()
{
while ((c = getchar()) != '\n') {
buffer[counter] =c;
counter++;
if (counter >255) {
break;
}
}
for(i=0; i<256; i++) {
if(buffer[i]== 'a'&&buffer[i+1]=='a'&&buffer[i+2]=='a')
{
buffer[i]= '*';
buffer[i+1]=' ';
buffer[i+2]=' ';
}
putchar(buffer[i]);
}
putchar('\n');
return 0;
}
【问题讨论】:
-
buffer[i + 1]和buffer[i + 2]有可能越界访问:这是未定义的行为。 -
for (..,i<256-->for (...,i<256-2
标签: c arrays if-statement replace while-loop