#include <stdio.h> void main() { char str[80]; scanf("%s",str); printf("%s",str); }

#include <stdio.h>
void main()
{
char str[80];
scanf("%s",str);
printf("%s",str);

这个地方里面[80]是限定字符个数?当删除[80]为什么程序会出错?输入how are you 的时候为什么只显示how?与空格有关吗?答好了加分!!!

首先,删除了[80] 之后,你定义的str 就是字符类型的,然后你输入语句中scanf("%s",str);
str指明输入是字符串类型,输入语句也是,报错是因为你的类型不匹配

至于输入how are you 时,只显示how 是因为 scanf标准输入函数中遇到空格之后,它就不在接受字符的了,所以如果要接受一行字符 你可以用gets(str);接受追问

最后一句什么意思,大神

追答

gets是包含在string.h头文件中的一个方法 用于接收一行字符,包括空格,所以不会出现有空格就不在接收的情况,但接收的字符请在元素个数范围内

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-09-21
是的,你定义了一个字符串数组,80表示里面的元素有80个,静态数组在声明时必须指定长度,不然会出错
第2个回答  2012-09-21
80是数组长度 C语言不允许定义数组时长度为空
第3个回答  2012-09-21
不是,但一定要有数字,在定义数组时需要指定长度。
第4个回答  2012-09-21
用gets(str)输入;puts(str)输出
相似回答