本篇文章介绍C++中如何使用gets函数和puts函数读取并且输出字符串,进而修改文章内容。
首先我们看一道题目。
题目来源:The 2015 ACM-ICPC School Contest of Chang'an University
题目大意:输入文章中的字母均是大写字母,我们需要按如下规则修改文章:
规则1:The first letter of a sentence must be a upper case.
规则2:The end of a sentence is a character '.'
规则3:Other letters in the essay should be transformed into lower case.
当输入为ACM-ICPC.ACM-ICPC 2015.的时候输出为Acm-icpc.Acm-icpc 2015.
注意:题目中的文章的每个句子之间可能是有空格的,或者是多个空格,也可以有换行等等。
代码如下:
#include <cstdio>
#define SIZE 1000
char orz[ SIZE + 10 ];
int first = 1;
int main()
{
while( gets( orz ) )
{
for( int i = 0; orz[i]; ++i )
{
if( orz[i] == '.' ) first = 1;
if( orz[i] >= 'A' && orz[i] <= 'Z' )
{
if( first )
{
first = 0;
continue;
}
orz[i] += 32;
}
}
puts( orz );
}
return 0;
}
这个代码可以处理'.'之后出现的第一个大写字母,而且不管中间有多少个空格。
代码中最重要的两个函数就是gets函数和puts函数,都包含在cstdio中。
gets函数:
1.功能:从stdin流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为‘\0’空字符,并由此来结束字符串。
2.返回值:读入成功,返回与参数buffer相同的指针;读入过程中遇到EOF(End-of-File)或发生错误,返回NULL指针。所以在遇到返回值为NULL的情况,要用ferror或feof函数检查是发生错误还是遇到EOF。所以作为while循环的条件时,当读入EOF时会返回NULL指针,可以使循环结束。
puts函数:
1.功能:puts()函数用来向标准输出设备(屏幕)写字符串并换行。
2.返回值:执行成功返回非负数,执行失败返回EOF。