带参数的main函数(一)
自己改的程序: #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; }