本题作者 C课程组
单位 浙江大学
本题要求编写程序,统计并输出某给定字符在给定字符串中出现的次数。
输入格式:
输入第一行给出一个以回车结束的字符串(少于80个字符);第二行输入一个字符。
输出格式:
在一行中输出给定字符在给定字符串中出现的次数。
输入样例:programming is More fun!
m
输出样例:2
| 0 | sample等价,有大小写和空格 | 176 | 2 |
答案正确 | 3 / 3 | |
| 1 | 出现次数为0 | 348 | 2 |
答案正确 | 3 / 3 | |
| 2 | 最长字符串 | 372 | 2 |
答案正确 | 3 / 3 | |
| 3 | 1个空格 | 376 | 2 |
答案正确 | 3 / 3 |
用到fgets函数,包含在stdio.h头文件中:
-
读取字符串:
fgets用于从指定的文件流(如stdin、文件等)读取字符,直到遇到换行符\n或读取到指定数量的字符为止。 -
包含换行符:与
scanf不同,fgets会将输入中的换行符\n也读取到字符串中。 -
限定读取长度:
fgets可以指定最大读取的字符数,这有助于防止缓冲区溢出。如果读取的字符数达到这个限制,fgets将停止读取,即使没有遇到换行符。 -
安全:由于
fgets允许你指定最大读取长度,因此它比gets(已被废弃,因为它不安全,容易导致缓冲区溢出)更安全。 -
返回值:
fgets的返回值是指向被读取字符串的指针,如果读取成功,返回这个指针;如果发生错误或到达文件末尾,返回NULL。 -
跨平台:
fgets在多种操作系统和平台上都能正常工作,包括 Windows、Linux 和 macOS。
思路比较简单,直接看答案:
#include<stdio.h>
int main()
{
char a[81];/*注意;为什么是81?因为题目说最大字符数是79,
但是因为fgets函数的特点,还要读入换行符,并且因为读入的是字
符串,所以要留出'\0'的位置,综上所述,要在79的基础上加2;当
然也可以大于81;*/
char c;
int i;
fgets(a, sizeof(a), stdin);
scanf("%c",&c);
int count=0;
for(i=0;a[i] != '\0';i++)
{
if(c==a[i]){
count++;
}
}
printf("%d",count);
return 0;
}
1411

被折叠的 条评论
为什么被折叠?



