C语言送分,输出字符串有问题

#include<stdio.h>
void main()
{int i;
char c[10];
for(i=0;i<10;i++)
{scanf("%c",&c[i]);}
printf("%s",c);
}
输出结尾会有一个“烫” 字 为什么?

没有字符串结束的那个标志符,输出是字符而不是字符串

用c[9]='\0'即可修复这个问题以及一些编译器解决输入多余字符无法处理的问题

#include<stdio.h>

int main(){int i;
    char c[10];
    
    for(i=0;i<10;i++){
        scanf("%c",&c[i]);
    }
    
    c[9] = '\0';
    
    printf("%s",c);
    return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-01-18
输出"烫"是因为vc编译器会自动把未用函数的局部变量空间按字节全部初始化为CC(你定义一个10个元素的char数组,结果你输入的元素没有把数据占满,后面没初始化,没赋值,没有使用,就变CC了)。CC 在Unicode的编码中就是表示中文的“烫”,所以就是“烫”字。别的编译器不是这样。追问

元素已经输入满了 超过10个也会这样

本回答被提问者采纳
第2个回答  2014-07-30

因为你输入的是单个字符,你每一次敲回车或者空格的时候也会当成一个字符来处理,所以这样并不能正确的得到你想要的结果,你可以这样输入一个字符数组。

#include<stdio.h>

void main()
{
char c[10];

scanf("%9[^\n]", c);    //表示遇到回车就结束输入,但是不能超过9个字符
                        //并且多出来的字符不处理,只会取前面9个字符

printf("%s\n", c);
}

第3个回答  2014-07-30
%s打印字符串,会在遇到‘\0’停止。应该定义char c[11];
for(i=0;i<10;i++)
{scanf("%c",&c[i]);}
c[i+1] = '\0'; //在字符串后加'\0'
printf("%s\n",c);
}
相似回答
大家正在搜