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

#include <stdio.h>

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

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

printf("%s",a);

return 0;
}
用这种方式输出字符之后,输出字符的后面总是带着几个其他的字符,这是怎么回事?

#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;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-25
#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;
}本回答被提问者和网友采纳
第2个回答  2013-05-12
因为数组没有初始化。也就是%s输出时,要遇到"\0"才结束。你的数组没有赋值"\0"。

希望给予采纳!
第3个回答  2013-05-12
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',不加就会输出多于的东西

第4个回答  2013-05-12
#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;
}

相关了解……

你可能感兴趣的内容

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