#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;
}本回答被提问者和网友采纳
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;
}
{
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;
}
int main(void)
{
int i = 0;
char a[20];
while((a[i++]=getchar())!='\n');
a[i]=0;//加这一句就行了,表示形成串
printf("%s",a);
return 0;
}