奥迪自动启停故障原因:用C语言编写一个程序

来源:百度文库 编辑:查人人中国名人网 时间:2024/03/29 12:56:03
题目:文件操作。
要求:用C语言编写一个程序
 可以读入任何一个文本文件,并计算文件中每一个字符出现的次数与百分比,并将结果写入另一个文件中,输出格式如下:
字符 次数 百分比
A 3 1.25%
 可以在任意一个文本文件中寻找,是否存在一个用户所输入的字符串。

#include <string.h>
#include <memory.h>
#include <stdio.h>
/*要求:用C语言编写一个程序
? 可以读入任何一个文本文件,并计算文件中每一个字符出现的次数与百分比,并将结果写入另一个文件中,输出格式如下:
字符 次数 百分比
A 3 1.25% */

void f1()
{
char filename[100];
int charmap[256],filelen,i;
unsigned char c;
FILE *f;
printf("Input file name:");
scanf("%s",filename);
f=fopen(filename,"rb");
if (f==NULL) return;
for (i=0;i<256;i++) charmap[i]=0; filelen=0;
while(fread(&c,1,1,f)) {charmap[c]++; filelen++;}
fclose(f);
printf("Output file name:");
scanf("%s",filename);
f=fopen(filename,"w");
if (f==NULL) return;
for (i=0;i<256;i++)
{
char buf[10];
if (charmap[i]==0) continue;
if (i>=0x20 && i<0x80) sprintf(buf,"%3c",i);
else sprintf(buf,"%02XH",i);
fprintf(f,"%s %6d %5.2f\n",buf,charmap[i],double(charmap[i])/filelen);
}

}
/*? 可以在任意一个文本文件中寻找,是否存在一个用户所输入的字符串。*/

void f2()
{
char filename[100];
char buf[256];
char temp[256];
int buflen,position=0;
FILE *f;

printf("Input file name:");
scanf("%s",filename);
f=fopen(filename,"rb");
if (f==NULL) return;

printf("Input string to be searched:");
scanf("%s",buf); buflen=strlen(buf);
if (buflen!=(int)fread(&temp,1,buflen,f)) {fclose(f); return;}
while(memcmp(buf,temp,buflen)){
memcpy(temp,temp+1,buflen-1); position++;
if (fread(temp+buflen-1,1,1,f)==0) {position=-1;break;}
}
fclose(f);
if (position==-1) printf("not found.\n");
else printf("At %d\n",position);
}

void main()
{
f1();
f2();
}

int num[256]={0};

num[fgetch(fp)]++;

int t=0;
for(i=0;i<256;i++)
t+=num[i];

if(t==0)exit;
float f;
for(i=0;i<256;i++)
{
if(num[i]!=0)
{
f=num[i]/t;
fprintf(fp,"%c %d %f%\n",i,num[i],f*100);
}
}