该程序接受 5 个字符串并打印它们。 这是程序:-
#include"stdio.h"
#include"conio.h"
void main(){
clrscr();
char s[5];
for(int i=0;i<5;i++){
scanf("%s", s[i]);
}
for(i=0;i<5;i++){
printf("\n\n%s", s[i]);
}
getch();
}
当我执行这个程序时,输出将是这样的
Click here to see the output of the program
但是当我以不同的方式输入字符串时,它会打印错误的输出
最佳答案
您正在将字符串读入字符,或者更确切地说,您读取的字符串从 s 中的字符位置 i 开始。由于s
非常短(当i
为5时为空),会出现溢出,导致未定义的行为。
正如 Blue Pixy 在他的评论中提到的那样,您想要一个字符串数组,而不是字符数组,例如char s[5][32];
。
同时打开警告。第二个 for 循环中的 i
未定义。
关于c - 请告诉我为什么两张图片的输出不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45117841/