将txt文件转化为二进制文件

#include 
#include 

int getdiff(char ch);
void main(void)
{
	FILE *rfp,*wfp;
	char msg[256];

	rfp=fopen("..\\ADS_B20141112.txt","r");
	wfp=fopen("..\\ADS_B20141112.dat","w+b");

	if (rfp==NULL || wfp==NULL)
		return;

	int i,num;
	while (!feof(rfp))
	{
		fgets(msg,256,rfp);
		i=0;
		while (msg[i]!=0x0a && i<256)//0x0a代表换行符,应为该文本打印出来是16进制的格式所以读取的ASCII的值是16进制的,而16进制中0x0a正好代表换行符
		{
			num=0;
			num=getdiff(msg[i])*16;//*16,
			num+=getdiff(msg[i+1]);//加上后一位

			i+=3;//跳过空格
			fwrite(&num,1,1,wfp);//fwrite(指针存放输出数据的首地址,数据块的字节数,读取数据块的个数,文本指针)?不确定打印的结果1个字节1个字节打印所以用1
		}
	}
	fclose(wfp);
	fclose(rfp);
}

int getdiff(char ch)
{
	int diff=0;
	if (ch>='0' && ch<='9')
		diff=ch-'0';
	if (ch>='A' && ch<='F')
		diff=ch-'A'+10;//换位11到15的数字

	return diff;

}

你可能感兴趣的:(在川大大一第一学期的c语言作业,c语言)