C语言//从另一文件中读取数字 和 字符串,并进行统计。

现在有一个文件 baseball1.txt, 我需要从中 读取里面的数字 以及 字符 并且 要统计不同字母的频率。如果文件中只有字母 这不是什么难事,但是我不知道 如何分别读取 数字和几串 长度不一的 字符串,还要分别统计字母频率。 求高手请教。

#include<stdio.h>
#include<stdlib.h>

int main(int argc, char *argv[])
{
char cha;
int n;
FILE *inp;

inp = fopen(argv[1],"r");

fclose(inp);

return 0;
}

/*
统计文件中重复的单词
*/

#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
#define FILEOPEN(x) fopen(#x,"r")
#define WORD_LEN 15
#define WORDS_LEN 1000

int main()
{
   
FILE *pfile=FILEOPEN(E:/2.txt);//fopen函数是第一个变元是文件路径 第二个是模式

  char *parr[WORDS_LEN];//记录每个单词的内存地址
  int words_count[WORDS_LEN];//生命记录单词的字符数组
  char temp_char=0;//用于记录fgetc从文件得到的字符
  int word_index=0;//记录单词的字符索引
  int words_index=0;//用于记录文本的单词索引
  int i,has_repeat;
  if(pfile)
  {
  char *pcurrent_char=(char *)malloc(sizeof(char)*WORD_LEN);//分配第一个单词的内存
    
     while(!feof(pfile))//循环一直到文件末尾
     {
    temp_char=fgetc(pfile);//从文件读取一个char
if(isalpha(temp_char))//判断这个字符是不是字符
//如果是字符就把当前的单词的字符索引位置对应的字符赋值为temp_char
          pcurrent_char[word_index++]=temp_char;
else
{
//如果不是字母,就认为刚才的那个单词已经结束。因为把pcurrent_char末尾添加\0
pcurrent_char[word_index]='\0';
if(strlen(pcurrent_char)>0)//这里只是为了方便。防止一些空字符
{
     word_index=0;//把word_index设为0;用于统计下一个单词
 
            has_repeat=0;//是否重复
    for(i=0;i<words_index;i++)
{
 //parr中寻找是否有与当前字符重复的字符,
//如果有就把对应的记录单词数的数组对应的索引的值++
        if(strcmp(parr[i],pcurrent_char)==0)//如果有两个单词相等
{
has_repeat=1;
  words_count[i]++;
  break;
}
   
}
//如果没有重复,就重复分配内存。并且把对应统计数量的 数组索引相应位置的值为1
if(!has_repeat)
{
     parr[words_index]=pcurrent_char;
              words_count[words_index++]=1;
  pcurrent_char=(char *)malloc(sizeof(char)*WORD_LEN);
}
      
}
}
 
 }

 for(int i=0;i<words_index;i++)
printf("%s出现%d次\t",parr[i],words_count[i]);
   fclose(pfile);
  }
  else
  printf("打开文件失败\n");

  return 0;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-10-21
你好!!
是不是只统计出大小写的出现次数和数字的出现次数呢

C语言\/\/从另一文件中读取数字 和 字符串,并进行统计。
feof(pfile))\/\/循环一直到文件末尾 { temp_char=fgetc(pfile);\/\/从文件读取一个charif(isalpha(temp_char))

C语言\/\/从另一文件中读取数字 和 字符串,并进行统计。
feof(pfile))\/\/循环一直到文件末尾 { temp_char=fgetc(pfile);\/\/从文件读取一个charif(isalpha(temp_char))

用c语言编程,字符统计:输入一个文本文件,分别统计出其中英文字母、空格...
printf("字母数:%d\\n空格数:%d\\n数字数:%d\\n其他字符:%d\\n",letters,space,digit,other);return 0;} 运行效果:

C语言如何统计并输出不同字符在文章中出现的次数或频率(空格、换行...
至于思路嘛,其实也没什么,就是分别进行判断是否数字、字母、空格之类,并和用自增运算符来统计数量。具体看注释。include"stdio.h"void main(){ int qita=0,english=0,space=0,number=0,i,j;while((i=getchar())!='\\n') \/**执行循环,把获得的字符赋给i,直到i等于换行符\\n时循环终...

用c语言打开一个文件,读取里面以固定字符和数字开头的字符串,统计字符...
请提供文本文件内容样本 以及程序运行结果的输出样子,需要准确信息,不然不知道怎么编写代码

c语言 从键盘输入一行字符,分别统计其中数字字符,字母字符和其他字符...
intmain(){ inta,b,c,ch;a=b=c=0;\/\/计数器初始化为0.while((ch=getchar())!='\\n')\/\/循环读取字符,到换行结束。{ if(ch>='0' && ch<='9')\/\/数字 a++;else if((ch>='a' && ch<='z')||(ch>='A' && ch<='Z'))\/\/字母 b++;else\/\/其它 c++;} printf("%d%d%d...

如何用c语言从txt文件中读出多行数据,并且算出每行数据之和,最后输出...
1)打开文件 FILE *r = fopen("文件", rb);2) 打开创建一个txt文件 FILE * w = fopen("txt", wb);3) 循环的以行为单位读取,直到文件结束 fgetline(r, buf, sizeof(buf), '\\n');解析行字符串buf, 累加数字求和 这里涉及到字符串的一些操作,及字符转数字问题 求的和写入txt文件...

c语言 输入一串字符串,统计并输出其中的大写字母、小写字母、数字字符...
要编写一个C语言程序,统计输入字符串中的大写字母、小写字母、数字字符和其他字符的个数,可以按照以下步骤进行。首先,我们需要定义一个字符数组来存储输入的字符串,并设置四个计数器分别用于记录各类字符的数量。c include void main() { char a[100];int sum0 = 0, suma = 0, sumA = 0; \/...

C语言 从键盘读入一个字符串,统计其中的数字出现的个数
include <stdio.h>int sumdig(char ch);\/\/ 是数字返回1 不是返回0int main(){ int count=0; char c; printf("请输入一个字符串"); while(1) { c=getchar(); if(c=='\\n') break; count=count+sumdig(c); } printf("其中数字的个数为%d",cou...

c语言 读取txt文件中的数字,然后运算,保存。
被读过来之后,会存在String里边,String说是字符串,实际上就是字符型组成的数组。你要对字符进行判断,然后转存到INT里边,不给出具体算法了,简单说一下思路。在ASCII表里,数字的表读是连续的,你可以编一个函数,对String里的字符进行判断,碰到数字之后按位数乘它的维权,相加存在INT里。当然这个...

相似回答