C语言程序输出结果分析:scanf和gets的结合使用
以下程序展示了C语言中scanf和gets函数的结合使用,以及它们在处理输入数据时的不同行为。
#include<stdio.h>
main()
{
char s1[10],s2[10],s3[10],s4[10];
scanf(' %s%s',s1,s2);gets(s3);gets(s4);
puts(s1);puts(s2);puts(s3);puts(s4);
}
输入数据:
aaaa bbbb<CR>
cccc dddd<CR>
程序的输出结果为:
aaaa
bbbb
cccc
dddd
分析:
-
scanf(' %s%s',s1,s2);首先使用scanf函数读取两个字符串,并分别存储到s1和s2中。由于scanf函数会忽略输入中的空格和换行符,因此第一行的aaaa bbbb<CR>中的空格被忽略,aaaa被存储到s1中,bbbb被存储到s2中。 -
gets(s3);接着使用gets函数读取下一行输入,并存储到s3中。gets函数会读取整个输入行,包括空格和换行符。因此,第二行的cccc dddd<CR>被完整地存储到s3中。 -
gets(s4);由于gets函数会读取整个输入行,而上一行输入中已经包含了换行符,因此这一行没有任何输入,s4中将存储一个空字符串。 -
puts(s1);puts(s2);puts(s3);puts(s4);最后使用puts函数依次输出存储在s1、s2、s3和s4中的字符串。
结论:
scanf 函数只能读取一个完整的字符串,遇到空格或者换行符就会停止读取。而 gets 函数可以读取整个输入行,包括空格和换行符。在实际编程中,需要根据具体情况选择合适的输入函数。
原文地址: http://www.cveoy.top/t/topic/iQua 著作权归作者所有。请勿转载和采集!