字符计数

# include<stdio.h>
/* 统计输入的字符数*/
main()
{
   double nc;
   for (nc = 0;getchar()!=EOF;++nc)
   ;
   printf("%.0f\n",nc);
}

 

转载于:https://www.cnblogs.com/ligongye/p/3374768.html

<think>好的,我现在需要帮用户找到用C语言实现字符计数的示代码。用户之前可能提到了字符计数,但根据引用内容,他们之前的问题可能涉及字符串操作,比如查找子串或统计字符。 首先,查看用户提供的引用资料。引用[3]中有一个自定义的my_strlen函数,用来计算字符串长度。这可能是一个起点,但字符计数可能不仅仅是长度,而是特定字符的出现次数。不过用户的问题比较笼统,需要明确需求是统计字符串长度还是统计特定字符的出现次数。 用户现在的问题直接是“字符计数”,可能指的是统计字符串中的字符数量,也就是字符串长度。但考虑到引用[2]提到了fgets的使用,这可能与输入字符串有关,需要处理输入中的换行符等。比如,使用fgets读取字符串时,会包含换行符,这可能影响统计结果,所以代码中需要处理这种情况。 根据引用[3]的my_strlen函数,可以修改为统计所有字符,或者排除换行符。另外,用户可能需要两种实现方式:使用库函数strlen和自定义函数。 接下来需要构造示代码。首先,用strlen实现,但要注意处理输入中的换行符。如,使用fgets读取后,检查最后一个字符是否是'\n',并将其替换为'\0',这样strlen就不会计算换行符。另外,自定义函数可以遍历每个字符直到遇到'\0',计数时同样排除换行符。 另外,用户可能需要统计特定字符的出现次数,比如字母数字或其他字符。但根据问题描述,用户可能更倾向于整体字符数,而不是特定类型。但为了全面,可以提供一个统计特定字符的示,比如统计字母出现的次数。 综上,给出两种统计字符串长度的代码:使用strlen和自定义函数。同时,提供一个统计特定字符的示。注意代码中的输入处理,比如使用fgets和替换换行符。同时,引用相关的引用资料,比如引用[3]的自定义函数,引用[2]的fgets注意事项。</think>根据您对字符计数功能的需求,这里提供三种典型的C语言实现方式: ### 一、基础版:统计输入字符串总长度 ```c #include <stdio.h> #include <string.h> int main() { char str[100]; printf("请输入字符串:"); fgets(str, sizeof(str), stdin); // 安全输入函数[^2] // 去除fgets可能读取的换行符 if (str[strlen(str)-1] == '\n') { str[strlen(str)-1] = '\0'; } printf("总字符数:%zu", strlen(str)); // 使用标准库函数[^3] return 0; } ``` ### 二、自定义版:实现strlen函数 ```c #include <stdio.h> int my_strlen(char* arr) { int count = 0; while (*arr != '\0') { count++; arr++; } return count; } int main() { char str[100]; printf("请输入字符串:"); fgets(str, sizeof(str), stdin); if (str[my_strlen(str)-1] == '\n') { // 使用自定义函数 str[my_strlen(str)-1] = '\0'; } printf("总字符数:%d", my_strlen(str)); return 0; } ``` ### 三、进阶版:统计特定字符出现次数 ```c #include <stdio.h> int count_char(char* str, char target) { int count = 0; while (*str != '\0') { if (*str == target) { count++; } str++; } return count; } int main() { char str[100], target; printf("输入字符串:"); fgets(str, sizeof(str), stdin); printf("查找字符:"); scanf("%c", &target); int result = count_char(str, target); printf("'%c'出现次数:%d", target, result); return 0; } ``` **代码特点说明:** 1. 使用`fgets`替代`gets`确保输入安全[^2] 2. 通过`sizeof`运算符动态获取数组长度 3. 处理输入缓冲区中的换行符 4. 同时提供标准库函数和自定义函数实现
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值