带参数的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;
}


 

 

 

posted @ 2010-12-17 22:14  _cc  阅读(768)  评论(0编辑  收藏  举报