注册 登录
编程论坛 C++教室

一个关于字符串的问题,对于字符串老是弄不清楚

luguolian 发布于 2013-08-17 18:33, 746 次点击
#include<stdio.h>
void main()
{    int i;
    char str[80];
    for(i=0;str[i]!='\0';i++)
        scanf("%c",&str[i]);
    for(i=0;str[i]!='\0';i++)
        printf("%c",str[i]);
}
这样编程不能输出字符串,只有改成下面的这种情况才能正常输出这是为什么呢??
for(i=0;i<5;i++)
        scanf("%c",&str[i]);
    for(i=0;i<5;i++)
        printf("%c",str[i]);
7 回复
#2
TonyDeng2013-08-18 13:06
不知道你怎样正确了、怎样不正确了。
#3
zhujiangtaoc2013-08-18 19:43
你的字符数组不会默认在末尾加上'\0'的
#4
yljyljylj2013-08-25 15:07
因为你的第一程序对字符数组并没有赋初值,你定义了一个长度为80的字符型的数组,内存开辟了这么大的存储空间,但并没有初值啊,你的循环条件str[i]!=\0,这个循环条件是无效的,因为你没定义这个数组的值,你后面才要定义!不知道,你懂了没?
#5
lzj125302013-08-25 21:13
对于字符数组,scanf函数是不会在数组末尾加上'\0'结尾符的。只有字符串对象才会自动加上结尾符。所以你的判断是无效的。
第二个你已经规定了长度当然是可以的
#6
holy__shit2013-08-26 19:56
回复 楼主 luguolian
把输入的字符当作输入字符串了!
#7
时间流走记忆2013-08-28 13:28
循环条件str[i]!=\0,这个循环条件是无效的,scanf函数是不会在数组末尾加上'\0'结尾符的。希望对你有帮助
#8
chaorenxx2013-08-28 14:52
来学习一下,一会试试你的程序
1