以下程序展示了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

分析:

  1. scanf(' %s%s',s1,s2); 首先使用 scanf 函数读取两个字符串,并分别存储到 s1s2 中。由于 scanf 函数会忽略输入中的空格和换行符,因此第一行的 aaaa bbbb<CR> 中的空格被忽略,aaaa 被存储到 s1 中,bbbb 被存储到 s2 中。

  2. gets(s3); 接着使用 gets 函数读取下一行输入,并存储到 s3 中。gets 函数会读取整个输入行,包括空格和换行符。因此,第二行的 cccc dddd<CR> 被完整地存储到 s3 中。

  3. gets(s4); 由于 gets 函数会读取整个输入行,而上一行输入中已经包含了换行符,因此这一行没有任何输入,s4 中将存储一个空字符串。

  4. puts(s1);puts(s2);puts(s3);puts(s4); 最后使用 puts 函数依次输出存储在 s1s2s3s4 中的字符串。

结论:

scanf 函数只能读取一个完整的字符串,遇到空格或者换行符就会停止读取。而 gets 函数可以读取整个输入行,包括空格和换行符。在实际编程中,需要根据具体情况选择合适的输入函数。

C语言程序输出结果分析:scanf和gets的结合使用

原文地址: http://www.cveoy.top/t/topic/iQua 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录