写出一个程序,接受一个由字母、数字和空格组成的字符串,和一个字符,然后输出输入字符串中该字符的出现次数。(不区分大小写字母)

该博客介绍了一个编程任务,要求编写程序找出一个包含字母、数字和空格的字符串中指定字符的出现次数,忽略大小写。提供了示例输入和输出,并探讨了`scanf()`和`fgets()`函数的用法,指出在处理字符串时这两个函数的区别。

一、题目

输入描述:

第一行输入一个由字母和数字以及空格组成的字符串,第二行输入一个字符。
输出描述:

输出输入字符串中含有该字符的个数。(不区分大小写字母)
示例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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值