/*本程序输出字符文本并计算空格个数*/ /*请在此处添加代码,输出文本并统计空格数*/ /********** Begin **********/ #include <stdio.h> #define charword 1000 int main() { int i=0; char a[charword]; scanf("%s",a); printf("%s",a); while(i>=0) { i++; scanf(" ",a); } if(i>0) printf("空格个数为:%d\n",i); return 0; } /********** End **********/请问哪里出错了
时间: 2023-07-23 10:07:27 浏览: 118
统计字符串的字母空格个数
在你的代码中,有几个地方出现了错误:
1. 在循环中,你使用了 `scanf(" ",a)` 来读取空格字符,这是错误的。`scanf` 函数的参数应该是一个格式化字符串,用于指定要读取的输入格式。如果你想读取空格字符,应该使用 `%c` 而不是 `" "`。所以应该是 `scanf(" %c", &a[i]);`。
2. 在统计空格个数时,你使用了一个无限循环 `while(i>=0)`,但没有提供退出循环的条件。这将导致程序陷入死循环。你可以使用一个 `break` 语句来跳出循环,比如当读取到换行符时退出循环。
3. 在统计空格个数时,你将计数器 `i` 初始化为 0,然后在循环开始前自增了一次,这将导致空格个数多计算了一个。你可以将初始化值改为 -1,然后在循环开始前不自增。
修正后的代码如下:
```c
#include <stdio.h>
#define charword 1000
int main() {
int i = -1;
char a[charword];
scanf("%s", a);
printf("%s", a);
while (1) {
scanf(" %c", &a[++i]);
if (a[i] == '\n') {
break;
}
}
if (i > 0) {
printf("空格个数为:%d\n", i);
}
return 0;
}
```
请注意,在读取字符时,我们在格式化字符串中加了一个空格,这是为了消耗掉之前的换行符,确保能正确读取字符。
阅读全文