黑马程序员技术交流社区
标题:
关于程序输出的问题?请教高手快速解决
[打印本页]
作者:
千年的泪
时间:
2014-5-28 23:26
标题:
关于程序输出的问题?请教高手快速解决
本帖最后由 千年的泪 于 2014-5-29 10:45 编辑
为什么输入一段文字后,并没有超过30个字符,但是只显示了前面的几个字符?
输入:asdf asdlk fel afself ef
输出:asdf
#include <stdio.h>
int main(void)
{
char s[30];
scanf("%s", s);
printf("%s\n", s);
return 0;
}
复制代码
作者:
xiaodixing
时间:
2014-5-29 00:06
空格在内存中是以“/0”存在的,一个字符串的最后也是默认加上一个“/0”,当打印到空格他就结束了,因此不会打印完
作者:
XCodeRush
时间:
2014-5-29 00:19
回答:当程序执行到scanf()函数时,
scanf()函数会在遇到第一个空白字符(空格、制表符、换行符)处停止读取。
用scanf()只会把一个单词而不是把整个输入的字符串读入字符数组中。
如果想要读入一整行的输入,可以考虑使用C提供的其他输入函数.
比如:gets()函数或者fgets()函数
#include <stdio.h>
int main(void)
{
char s[30];
// gets()函数会读取一整行
// 但是要注意,gets()函数不检查输入的字符数是否超过字符数组的实际容量。
// 在使用gets()函数时要注意准备输入的字符数,以及要为'\0'预留存储空间。
// fgets()函数可以设定最大读取字符数,但如果只是测试程序,还是gets()函数比较方便。
// fgets(s, sizeof(s), stdin);
gets(s);
printf("%s\n", s);
return 0;
}
复制代码
作者:
Guardian_Angel
时间:
2014-5-29 01:52
XCodeRush 发表于 2014-5-29 00:19
回答:当程序执行到scanf()函数时,
scanf()函数会在遇到第一个空白字符(空格、制表符、换行符)处停止读 ...
这个不错 顶
作者:
詹绪长
时间:
2014-5-29 06:28
学习了{:3_46:}
作者:
夏沫的黄昏′
时间:
2014-5-29 08:47
你应该使用gets来读一行
作者:
千年的泪
时间:
2014-5-29 10:49
原来如此!{:3_54:}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2