C语言基础—字符串输入输出函数puts和gets

来源:互联网 发布:淘宝发票抬头哪里设置 编辑:程序博客网 时间:2024/06/05 06:50
C语言中没有单独定义字符串的变量类型,而是采用字符数组的形式来定义及存储。
字符串与字符数组一个很大的区别是字符串以字符‘\0’来结尾,因此采用for循环计算字符数组的长度时,常常会把字符‘\0’统计到结果当中。字符串处理函数strlen可以直接统计出字符串中不包含‘\0’的字符串长度,其存储在string.h文件中。string.h文件中还包括puts,gets等字符串处理函数。
gets函数的使用格式:gets(字符串存储的地址);
该函数的特点:
1使用该函数接受键盘录入的字符串时,可以接受键盘输入的空格;
2gets函数使用时出现警告,因为通过键盘录入的字符串长度可能超过通过字符数组定义的空间。
puts函数格式:puts(字符串地址);
puts输出函数遇到‘\0’时才停止输出,因此通过字符数组定义的字符串,如果缺少‘\0’,则可能会输出不正确的结果,使用中应避免。


下面是利用上述字符串处理函数实现统计录入字符串中的单词个数,并且把每一个单词的首字母转变成大写字母。




#include "stdafx.h"
#include <string.h>
int main(int argc, char* argv[])
{
//统计字符串中单词个数及单词首字母大写
char ch[20];
gets(ch);
int word = 0;
int count = 0;
/*printf("%d\n",strlen(ch));*/


for(int i = 0;i < strlen(ch);i++)
{
//判断第一个字母是否是大写
if(i == 0)
{
if(ch[i] >= 'a' && ch[i] <='z')
{
ch[i] -= 32;
}
count++;
}
//依次判断后续字符,遇到空格时,单词数量加1,并把空格后单词的后首字母大写
if(ch[i] == ' ')
{
word = 1;
}
else if(word == 1)
{
if(ch[i] >= 'a' && ch[i] <='z')
{
ch[i] -= 32;
}
word = 0;
count++;
}
}
printf("输入字符个数:%d\n转化后字符:%s\n",count,ch);
return 0;
}
0 0