C语言中用%s输出数组遇到的问题

#include<stdio.h>intmain(void){inti=0;chara[20];while((a[i++]=getchar())!='\n');print... #include <stdio.h>

int main(void)
{
int i = 0;
char a[20];

while((a[i++]=getchar())!='\n');

printf("%s",a);

return 0;
}
用这种方式输出字符之后,输出字符的后面总是带着几个其他的字符,这是怎么回事?
展开
 我来答
phd121212
2013-05-12 · TA获得超过494个赞
知道小有建树答主
回答量:114
采纳率:0%
帮助的人:35.8万
展开全部

#include <stdio.h>


int main(void)

{

    int i = 0;

    char a[20]=" ";    //在这里,给a附空值,否则,后面的数组a如果没有被赋值,系统会随机赋值


    while((a[i++]=getchar())!='\n');

    printf("%s\n",a);


return 0;

}

汐日南莘
推荐于2017-11-25 · TA获得超过1.4万个赞
知道大有可为答主
回答量:1.6万
采纳率:45%
帮助的人:7460万
展开全部
#include <stdio.h>
int main(void)
{
int i = 0;
char a[20];

while((a[i++]=getchar())!='\n');
a[i]='\0';//加个这个就不会了 这个是字符串的结束标志
printf("%s",a); /*因为如果没有字符串的结束标志这里输出时要输出全部的20个字符 不够20时就输出乱码*/
return 0;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yooyocn
2013-05-12 · TA获得超过326个赞
知道答主
回答量:115
采纳率:100%
帮助的人:72.6万
展开全部
因为数组没有初始化。也就是%s输出时,要遇到"\0"才结束。你的数组没有赋值"\0"。

希望给予采纳!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
LW763
2013-05-12 · TA获得超过128个赞
知道小有建树答主
回答量:146
采纳率:0%
帮助的人:91.7万
展开全部
int main(void)
{
    int i = 0;
        char a[20];
    while((a[i++]=getchar())!='\n')//这的;不要加
       {}
    a[i-1]='\0';
        printf("%s",a);
    return 0;
}

printf()这个函数是按碰到'/0'才停止输出的,所以要最加/'0',不加就会输出多于的东西

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
201007031324
2013-05-12 · TA获得超过1239个赞
知道小有建树答主
回答量:505
采纳率:0%
帮助的人:230万
展开全部
#include <stdio.h>

int main(void)
{
int i = 0;
char a[20];

while((a[i++]=getchar())!='\n');
a[i]=0;//加这一句就行了,表示形成串
printf("%s",a);

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

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式