自己改的程序:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef char BYTE;
typedef float DWORD;
int main(int argc,char *argv[])
{
int i;
FILE *fp1,*fp2;
int aa,bb;
sscanf(argv[2],"%d",&aa); //将字符符型改为整型
//sscanf函数参见msdn或者百度,google
sscanf(argv[3],"%d",&bb);
BYTE *data1=(BYTE *)malloc(aa*bb*sizeof(BYTE));
printf("%d\n",aa*bb); //用于调程序时候查看参数传的是否正确。
DWORD *data2=(DWORD *)malloc(aa*bb*sizeof(DWORD));
if((fp1=fopen(argv[1],"rb"))==NULL)
{
printf("can not open file!");
return 0;
}
if((fp2=fopen(argv[4],"w"))==NULL)
{
printf("can not open file!");
return 0;
}
memset(data1,0,aa*bb*sizeof(BYTE)); /* 初始化 */
memset(data2,0,aa*bb*sizeof(DWORD));
fread(data1,sizeof(char),aa*bb,fp1); /* 将fp1里面的内容读入到data1*/
for(i=0;i<aa*bb;i++)
{
data2[i]=((int)data1[i])*1.0; /* data1里面的数据转换为浮点型 */
}
for(i=0;i<aa*bb;i++)
{
if((i%bb)==0) /* 一行640列 */
{
if(i==0) /* 写进去的第一个数字 如果省略,第一行将会多换空白 */
{
fprintf(fp2,"%-4.0f",data2[i]);
}
else
{
fprintf(fp2,"\n",data2[i]); /* 每640列换行 */
fprintf(fp2,"%-4.0f",data2[i]); /* 换行完还得继续写数据,不能忘记 */
}
}
else
{
fprintf(fp2,"%-4.0f",data2[i]); /* 再把浮点转换为字符并写入到fp2里面 */
}
}
fclose(fp1);
fclose(fp2);
free(data1);
free(data2);
return 0;
}