C语言,为什么输出字符的时候会多几个字符?

2025-04-26 18:12:37
推荐回答(2个)
回答1:

\0不是读入的,是程序自动加上的,表示一个串或一个行读取完成的结束位置,你只需要处理\0之前的数据,到\0就不要继续处理了。这个结束符总要占用一个字节的内存位置.
对于二进制文件用fread读取,就不需要为这个\0预留位置了

回答2:

多出来的是换行符.
你可以改成
while(scanf("%c",&str)
&&
str!='\n')
这样遇到换行符结束程序.
否则
读到换行符并输出是正常的.
或者可以限制输出只有大写的时候
if(str>='A'
&&
str<='Z')
printf(...)