|
发表于 2024-1-5 10:48:45
|
显示全部楼层
问题出在你的输入方式上。在输入字符时,你使用了`scanf("%c", &a[i])`来逐个读取字符,但这样会导致空格符也被读入数组中。也就是说,当你输入"a b c d"时,实际上数组中存储的是"a"," ","b"," ","c"," ","d"。
解决这个问题的方法有很多,其中一种简单的方法是使用`getchar()`来逐个读取字符,并且在读取完每一个字符后,判断是否是空格符,如果是空格符则跳过,如果不是则存入数组中。
以下是修改后的代码:
- #include <stdio.h>
- int main(){
- int n, i;
- printf("请输入字符的个数:");
- scanf("%d", &n);
- char a[n+1];
- printf("请输入输入字符:");
- getchar(); //将标准输入流中剩下的'\n'扔掉
- for(i = 0; i < n; i++){
- char c = getchar();
- if(c == ' '){ // 空格符不存入数组
- continue;
- }
- a[i] = c;
- }
- a[n] = '\0';
- printf("你输入的字符串是:%s\n", a);
- return 0;
- }
复制代码
重新编译运行后,输出应该如下所示:
- 请输入字符的个数:4
- 请输入输入字符:a b c d
- 你输入的字符串是:abcd
复制代码
希望对你有帮助!如果还有其他问题,请随时向我提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |
|