zoukankan      html  css  js  c++  java
  • 带参数的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,这样改来就是上面的程序了。

  • 相关阅读:
    Generate Parentheses
    Length of Last Word
    Maximum Subarray
    Count and Say
    二分搜索算法
    Search Insert Position
    Implement strStr()
    Remove Element
    Remove Duplicates from Sorted Array
    Remove Nth Node From End of List
  • 原文地址:https://www.cnblogs.com/zerocc/p/1914784.html
Copyright © 2011-2022 走看看