马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#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++){
scanf("%c", &a[i]);
}
a[n] = '\0';
printf("你输入的字符串是:%s\n", a);
return 0;
}
用terminal编译代码,感觉输出有问题。➜ desktop gcc test.c && ./a.out
请输入字符的个数:4
请输入输入字符:a b c d
你输入的字符串是:a b
我觉得输出应该 a b c,请问哪里出问题了?@FishC
对不起,我之前的回答有误导你。实际上,你的代码还存在其他问题。
首先,你只定义了一个字符变量`a`来存储输入的字符,每次循环结束后,`a`的值会被覆盖。所以最终输出的字符串只是最后一个字符。
其次,你在使用`printf`输出字符串时,使用了`%s`格式化字符,但实际上你并没有定义一个字符串类型来存储输入的字符。
下面是修正后的代码:
#include <stdio.h>
int main() {
int n, i;
printf("请输入字符的个数:");
scanf("%d", &n);
char a[n+1]; // 定义一个存储字符串的数组,长度要多出一个位置来存放字符串的结尾符'\0'
printf("请输入输入字符:");
getchar(); // 将标准输入流中剩下的'\n'扔掉
for(i = 0; i < n; i++) {
a[i] = getchar(); // 逐个读取字符存入数组中
if(a[i] == ' ') { // 如果是空格符,则跳过,不存入数组
i--;
continue;
}
}
a[n] = '\0'; // 字符串末尾添加结尾符'\0'
printf("你输入的字符串是:%s\n", a);
return 0;
}
重新编译运行后,输出应该如下所示:
请输入字符的个数:4
请输入输入字符:a b c d
你输入的字符串是:abcd
希望这次能够解决你的问题,如果还有其他疑问,请随时提问。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
|