一、题目
输入描述:
第一行输入一个由字母和数字以及空格组成的字符串,第二行输入一个字符。
输出描述:
输出输入字符串中含有该字符的个数。(不区分大小写字母)
示例1
输入:
ABCabc
A
输出:
2
二、代码
#include <stdio.h>
//strlen()函数所在的头文件
#include <string.h>
#define cmp ('a'-'A')
//预处理器定义函数
#define Com(x,y) ((x>y?x:y)-(x<y?x:y))
int main(void) {
char str[1024];
char ch;
int i;
int count = 0;
//sizeof()函数,获取str函数所占的字节数
fgets(str, sizeof(str), stdin);
scanf("%c", &ch);
for (i = 0; i < strlen(str); i++) {
if ((str[i]-ch) == 0 || Com(str[i], ch) == cmp)
count++;
}
printf("%d", count);
return 0;
}
- scnaf()函数,读取字符串中的一个单词,而不是一整句。scnaf()在遇到空格时就停止读取。
三、fgets()函数解释
- fgets()函数,用于读取一串字符,包括换行符’\n’。
- fgets() 和 gets() 一样,最后的回车都会从缓冲区中取出来。只不过 gets() 是取出来丢掉,而 fgets() 是取出来自己留着。但总之缓冲区中是没有回车了!所以与 gets() 一样,在使用 fgets() 的时候,如果后面要从键盘给字符变量赋值,那么同样不需要清空缓冲区。示例如下:
#include <stdio.h>
int main(void) {
char str[50];
char ch;
printf("input a string:\n");
fgets(str, sizeof(str), stdin);
printf("input a character:\n");
scanf("%c", &ch);
//无需在printf()函数中加入换行符。
//因为在fgets()函数中,已经读取到键盘输入的换行符,并且放入到了str字符串中。
//在打印str时,会把其中的换行符也打印出来
printf("str=%s", str);//此处,无需额外添加换行符
printf("ch=%c\n", ch);
return 0;
}
该博客介绍了一个编程任务,要求编写程序找出一个包含字母、数字和空格的字符串中指定字符的出现次数,忽略大小写。提供了示例输入和输出,并探讨了`scanf()`和`fgets()`函数的用法,指出在处理字符串时这两个函数的区别。
481

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



