040题 请编制函数ReadDat()实现从文件IN.DAT中读取100个十六进制整数到数组xx中;请编制函数H16To10().将xx中的十六进制数转换成十进制数并把已转换的十进制数仍存放在字符串数组xx,最后调用函数WriteDat()把结果输出到OUT.DAT文件中。
原始数据文件存放的格式是:每行存放10个数,并用逗号隔开。(每个数均大于0且小于等于2000)
部分源程序已给出。
请勿改动主函数main()和输出数据函数writeDat()的内容。 #include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
#define MAX 100

char xx[MAX][20]
void WriteDat(void)

int ReadDat(viod)
{
FILE *fp;

if((fp=fopen(" IN.DAT" ," r")==NULL) return 1;

fclose(fp);
return 0;
}

void H16To10(void)
{

}

void main()
{
int i;

for(i=0;i<MAX;i++)memset(xx[i],0,20);
if(ReadDat()){
printf(" 数据文件IN.DAT不能打开!\007\n" );
return;
}
H16To10()
WriteDat()
}

void WriteDat(void)
{
FILE *fp;
int i;

fp=fopen("OUT.DAT" ," w" );
for(i=0;i<MAX;i++)fprintf(fp," %s\n" ,xx[i]);
fclose(fp);
}


/* 注:该题与题39相似,只是改变函数itoa()的格式。*/
int ReadDat(void)
{
FILE *fp ;
int i,data;
char yy[20];

if((fp=fopen("in.dat","r"))==NULL) return 1;
for(i=0;i<100;i++)
{fscanf(fp,"%x,",&data);
itoa(data,yy,16);
strcpy(xx[i],yy);
}
fclose(fp) ;
return 0 ;
}

void H16to10(void)
{
int i,data;
char yy[20];
for(i=0;i<100;i++)
{data=strtol(xx[i],NULL,16);
itoa(data,yy,10);
strcpy(xx[i],yy);
}
}

返回南开百题目录

www.163164.cn 联系QQ:3149886