• 带参数的main函数(二)


    #include <stdio.h>
    #include <string.h>  //mesmet
    #include <stdlib.h>  //malloc
    
    typedef char BYTE ;
    typedef float WORD ;
    
    int main(int argc,char *argv[])
    {
        int i,j,h;
        FILE *fp1,*fp2;
        int aa,bb,k,d,result;
    	
        sscanf(argv[2],"%d",&aa);		//输入行号
    	sscanf(argv[3],"%d",&bb);		//输入列号
    	sscanf(argv[4],"%d",&k);		//输入波段号
    	sscanf(argv[5],"%d",&h);        //要取的波段号
    	
    	d=aa*bb;
    		
        BYTE *data1=(BYTE *)malloc (d*k*sizeof(BYTE));
        WORD *data2=(WORD *)malloc (d*sizeof(WORD));
        BYTE *filename=(BYTE *)malloc(20*sizeof(BYTE));
        
        if((fp1=fopen(argv[1],"rb"))==NULL)
        {
            printf("Can not open file!\n");
            return 0;
        }
        
        //初始化
        memset(data1,0,d*k*sizeof(BYTE));
        memset(data2,0,d*sizeof(WORD));
        memset(filename,'\0',20*sizeof(BYTE));
        
        fseek(fp1,512*512L,SEEK_SET);  //指针定位,每次偏移512*512个字符位置
    	
    	// sprintf(filename,"%s%d",argv[6],i);
    	
    	sprintf(filename,"%s%d",argv[6],h);
    	
    	if((fp2=fopen(filename,"wb"))==NULL)
    	{
    		printf("Can not open file!\n");
    		return 0;
    	}
    	
    	//每次读一块,即512*512
    	fread(data1,sizeof(BYTE),d,fp1);
    	
    	//转换为实型
    	for(j=0;j<512*512;j++)
    	{
    		data2[j]=((int)data1[j])*1.0;
    	}
    	
    	//把一块数据从fp2写到文件中
    	fwrite(data2,sizeof(WORD),512*512,fp2);		//只写出要读的波段
    		
    	fclose(fp1);
    	fclose(fp2);
    	free(data1);
    	free(data2);
    	free(filename);
    	
        return 0;
    }
    

    最初是在上次写的代码基础上面进行的,输出是六个,用的for循环。改的时候想的是里面是连续存储的,如果要写只要写要读的那一个就可以,但是这样没有写的还是会自动的建立空白的文件n个。之后就是把我的问题说了,然后问的同学。因为读的时候图片的地址是连续的。可以把指针重新定位一下。用fseek,这样改来就是上面的程序了。

  • 相关阅读:
    我编写的一个显示菱形的C程序
    关于一个分离1~32767之间整数的一个C程序的研究
    COM Event to HTML at IE
    Dynamic Create COM Attribute
    最常用的图像处理优化
    【转】为什么会出现LNK2005"符号已定义"的链接错误?
    一道判断的面试题
    Google放出C++代码风格规范
    inno setup读取XML文件
    Ulipad框架分析(一)
  • 原文地址:https://www.cnblogs.com/zerocc/p/1914784.html
Copyright © 2020-2023  润新知