字符数组的输入与输出 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
求助! 展开
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
求助! 展开
3个回答
展开全部
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];
你要输入的是 20000001,那么你的字符数组长度应定义为 9个长度,即 char x[100][9];
展开全部
你的字符串数组定义的太小
char x[100][9];这样读入8个字符的字符串,最后还可以容纳一个'\0',否则当打印x[0]的时候,由于x[0]没有‘\0'结尾,会继续往下读取x[1]的内容,直到读取到x[3]结束为止,因为输入x[3]的时候,最后一个'\0'字符保存在了x[4][0],所以输出时到这里就结束了。
char x[100][9];这样读入8个字符的字符串,最后还可以容纳一个'\0',否则当打印x[0]的时候,由于x[0]没有‘\0'结尾,会继续往下读取x[1]的内容,直到读取到x[3]结束为止,因为输入x[3]的时候,最后一个'\0'字符保存在了x[4][0],所以输出时到这里就结束了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
void main()
{
char str[]={""};
scanf("%s",str);
printf("%s",str);
}
貌似不对
void main()
{
char str[]={""};
scanf("%s",str);
printf("%s",str);
}
貌似不对
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询