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,这样改来就是上面的程序了。

  • 相关阅读:
    研究table-cell和overflow
    自己封装jquery的一些方法 链式调用模式
    简单的抖动运动 主要利用offset left 和 setTimeout
    闭包的讲解与简单实用(重新理解)
    操作iframe 的方法与兼容性
    360度全景图片
    数组排序
    怎么让链式调用setTimeout停止
    setInterval 和 setTimeout
    重力碰撞运动的疑惑
  • 原文地址:https://www.cnblogs.com/zerocc/p/1914784.html
Copyright © 2011-2022 走看看