统计字母个数(C语言)
Posted 劳埃德·福杰
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了统计字母个数(C语言)相关的知识,希望对你有一定的参考价值。
题目:读取文件中的字符串,统计从“a”到“z”26个字母各自出现的次数,并将结果放入数组中。如文件中有字符串abcdefgabcdeabc,输出33322110000000000000000000。
思路:这里我用letter[0] - letter[25]分别存储a-z出现的次数。letter[0]=letter[‘a’-‘a’],letter[0]存储a出现的次数;letter[1]=letter[‘b’-‘a’],letter[1]存储b出现的次数;以此类推…
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void)
char string[200]; /*string数组存放字符串*/
int letter[26] = 0 ; /*letter数组记录字母出现的次数*/
unsigned int i;
FILE *fp;
errno_t err;
if ((err = fopen_s(&fp, "data.txt", "r")) != 0)/*打开文件,并判断*/
printf("\\ncan not open the file!\\n"); /*若打不开,提示*/
exit(1); /*退出程序*/
while (!feof(fp)) /*从头到尾读文件*/
fscanf_s(fp, "%s", string, 200 * sizeof(char)); /*把文件中字符串放到数组里*/
for (i = 0; i < strlen(string); i++) /*遍历字符串*/
if (string[i]<'a' || string[i]>'z') /*若非a~z*/
continue; /*不记录*/
letter[string[i] - 'a']++; /*记录a~z出现的次数*/
fclose(fp); /*关闭文件*/
for (i = 0; i < 26; i++) /*输出记录*/
printf("%d ", letter[i]);
printf("\\n");
return 0;
文件data.txt内容:
如果你用的是dev c++,按下面这样写
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(void)
char string[200]; /*string数组存放字符串*/
int letter[26] = 0 ; /*letter数组记录字母出现的次数*/
unsigned int i;
FILE *fp;
fp = fopen("data.txt", "r");
/*打开文件,并判断*/
if (fp == NULL)
printf("\\ncan not open the file!\\n"); /*若打不开,提示*/
exit(1); /*退出程序*/
while (!feof(fp)) /*从头到尾读文件*/
fscanf(fp, "%s", string, 200 * sizeof(char)); /*把文件中字符串放到数组里*/
for (i = 0; i < strlen(string); i++) /*遍历字符串*/
if (string[i]<'a' || string[i]>'z') /*若非a~z*/
continue; /*不记录*/
letter[string[i] - 'a']++; /*记录a~z出现的次数*/
fclose(fp); /*关闭文件*/
for (i = 0; i < 26; i++) /*输出记录*/
printf("%d ", letter[i]);
printf("\\n");
return 0;
以上是关于统计字母个数(C语言)的主要内容,如果未能解决你的问题,请参考以下文章
C语言程序:编写程序,统计特定字母的个数。要求用指针编写。谢谢!!!
c语言 对任意输入的字符串,统计其中的大写字母和小写字母的个数