字符数组的输入与输出 c语言

#include<stdio.h>
void main()
{
int n,i;
char x[100][8];
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%s",x[i]);
for(i=0;i<n;i++)
{
printf("%s\n",x[i]);
}
}

输入
4
20000001
20000002
20000003
20000004
输出应为
20000001
20000002
20000003
20000004
但为什么会是
20000001200000022000000320000004
200000022000000320000004
2000000320000004
20000004
求助!

char x[100][8]; 你这里定义的一个字符数组长度为 8 ,而你的 输入 20000001长度为 8,那么那个结束符 ‘\0’ 就没地儿存放了,也就是说你的 x[0] 的后面是没有 \0 的,直接就是存储 x[1] 了,那么你在输出的时候,输出 x[0] ,在 x[0] 的后面没有找到 \0 ,它会继续找,一直到你输入的最后一个字符数组后,哪里有个 回车 存在内存里了,结束,也就是 x[0] 输出的是你输入的全部字符,x[1] 输出的是你的除了 x[0] 之后的所有字符。

你要输入的是 20000001,那么你的字符数组长度应定义为 9个长度,即 char x[100][9];
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-05-08
你的字符串数组定义的太小

char x[100][9];这样读入8个字符的字符串,最后还可以容纳一个'\0',否则当打印x[0]的时候,由于x[0]没有‘\0'结尾,会继续往下读取x[1]的内容,直到读取到x[3]结束为止,因为输入x[3]的时候,最后一个'\0'字符保存在了x[4][0],所以输出时到这里就结束了。
第2个回答  2013-05-08
#include<stdio.h>
void main()
{
char str[]={""};
scanf("%s",str);
printf("%s",str);

}
貌似不对

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网