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

#include<stdio.h>voidmain(){intn,i;charx[100][8];scanf("%d",&n);for(i=0;i<n;i++)scanf... #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
求助!
展开
 我来答
百度网友fe8c089
2013-05-08 · TA获得超过711个赞
知道小有建树答主
回答量:616
采纳率:0%
帮助的人:206万
展开全部
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];
百度网友83cdc1c
2013-05-08 · TA获得超过5788个赞
知道大有可为答主
回答量:1907
采纳率:100%
帮助的人:816万
展开全部
你的字符串数组定义的太小

char x[100][9];这样读入8个字符的字符串,最后还可以容纳一个'\0',否则当打印x[0]的时候,由于x[0]没有‘\0'结尾,会继续往下读取x[1]的内容,直到读取到x[3]结束为止,因为输入x[3]的时候,最后一个'\0'字符保存在了x[4][0],所以输出时到这里就结束了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
happy的wife
2013-05-08
知道答主
回答量:8
采纳率:0%
帮助的人:1.2万
展开全部
#include<stdio.h>
void main()
{
char str[]={""};
scanf("%s",str);
printf("%s",str);

}
貌似不对
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式