交通肇事责任认定书:c语言的题目

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/05 04:14:17
有一个文本(一篇英文文章)存放这一篇英语短文。
条件:
1:统计文章中有多少个英文单词.
2:统计文章中每个单词的出现次数.
3.结果存到另一个文本文件里.
牛鼻人都干啥了 我有思路有想法就是实现有问题 考虑的因素太多 可否支持

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "ctype.h"
#define MAX 10000

void main()
{
FILE * fp;
int ch ;
int temp = -1;
int space = 0;
char array[MAX][30];
int number = 0;
int i = 0 ;
char *lest,*str;
char * p;
lest=(char *)malloc(30);
str =(char *)malloc(30);
p = str;
if(lest == NULL || str== NULL)
{
printf("分配内存失败\n");
exit(1);
}

if(NULL == (fp = fopen("1.txt","rb"))) //打开文件
{
printf("文件打开失败\n");
exit(1);
}

ch = fgetc(fp);
while(ch != EOF)
{
if( isalpha(ch) && (ispunct(temp)||isspace(temp))) //进行条件判断
space++;
temp = ch;
ch = fgetc(fp);
}
printf("In all the letter total is: %d\n",++space);
rewind(fp);
fscanf(fp,"%s",lest);
for(number = 0;number <= space;number++)
{
for(i = 0;i<=(int)strlen(lest);i++)
{
if(i<=(int)strlen(lest))
array[number][i] = '\0';
if(ispunct(*(lest+i))&&(i == (int)strlen(lest)-1)) //进行条件判断
{
array[number][i] = '\0';
break;
}
array[number][i] = *(lest+i);
}
fscanf(fp,"%s",lest);
}
fclose(fp);
for(number=0; number<=space-1;number++)
{
str = array[number];
for(i=number+1; i<=space-1;i++)
{
temp =1;
if(!strcmp(str,array[i]))
temp++;
}
printf("%20s :%d\n",str,temp);
}
free(p);
free(lest);

}

实现第一步:新建一个字符串数组以及一个整型变量,用指针调用数组,每当指针指向空格时该整型变量加一,就可以统计出单词的个数
实现第二步 类似第一步,当出现一次该单词时,变量加一即可
实现第三步,新建一个字符串数组,将结果赋值给该数组即可