zoukankan      html  css  js  c++  java
  • linux getopt使用之解析输入字符串和strtol和atoi使用



    处理:
    第二个参数有些东西: :后面须接参数 -bxx和:: 后面可不接参数,后面多个选项,-mnzxc
    argv[optind]:可以得到后面 -axx -bxx 后面这个-bxx的值,不过是string类型的.
    optarg:得到是-a后面的值.


    #include <stdio.h> #include <unistd.h> #include "task.h" int main(int argc,char**argv) { int ch = -1; char *string = "v::a::b::cdezgnmcv"; int count = 0; while((ch=getopt(argc,argv,string))!=-1) { printf(" is %c ",ch); printf("gain is %s ",optarg); printf("optind is %d ",optind); printf("string optind is %s ",argv[optind]); printf("argc is %d ",argc); printf("argv is %s ",argv[1]); switch(ch) { case 'a': printf("get opt ch is a "); break; case 'b': printf("get opt ch is b "); break; case 'c': printf("get opt ch is c "); break; case 'd': printf("get opt ch is d "); break; case 'n': printf("get opt is n "); break; case 'v': printf(" string string gain is %s ",optarg); break; default: printf("unknow "); break; } count++; printf("count is %d ",count); } count = 0; //printf("argc backward is %d ",argc); //task_create(); //printf("argc forward is %d ",argc); while(1) { if( getchar() == 'x') { printf("main phread "); break; } } return 0; }

     ./sunshine  -v500  -b11 

    is v
    gain is 500
    optind is 2
    string optind is -b11
    argc is 3
    argv is -v500
    string string gain is 500
    count is 1
    is b
    gain is 11
    optind is 3
    string optind is (null)
    argc is 3
    argv is -v500
    get opt ch is b
    count is 2

    #include <stdio.h>
    #include <stdlib.h>
    #include <unistd.h>
    #include "task.h"
    
    int main(int argc,char**argv)
    {
    	int ch = -1;
    	char *string = "v::a::b::cdezgnmcv";
    	int count = 0;
    	int volume = -1;
    	while((ch=getopt(argc,argv,string))!=-1)
    	{
    	    printf(" is %c
    ",ch);
    		printf("gain  is %s
    ",optarg);
    		printf("optind is %d
    ",optind);
    		printf("string optind is %s
    ",argv[optind]);
    		printf("argc is %d
    ",argc);
    		printf("argv is %s
    ",argv[1]);
    			
    		volume   = strtol(optarg, NULL, 10); 
    		volume   = atoi(optarg);
    		printf("111111volume is1111111 %d
    ",volume);
    		
    		switch(ch)
    		{
    			case 'a':
    				 printf("get opt ch is a
    ");
    				 break;
    		    case 'b':
    				 printf("get opt ch is b
    ");
    				 break;
    			case 'c':
    				 printf("get opt ch is c
    ");
    				 break;
    			case 'd':
    				 printf("get opt ch is d
    ");
    				 break;
    			case 'n':
    				 printf("get opt is n
    ");
    				 break;
    			case 'v':
    				 printf(" string string gain is %s
    ",optarg);
    				 break;
    			default:
    				 printf("unknow
    ");
    				 break;
    		}
    
    		count++;
    		printf("count is %d
    ",count);
    		
    	}
    		count = 0;
    
    	//printf("argc backward is %d
    ",argc);
    	//task_create();
        //printf("argc forward is %d
    ",argc);
        
    	while(1)
    	{
    		if( getchar() == 'x')
    		{
    			printf("main phread
     ");
                break;
    		}
    		
    	}
    
    	return 0;
    	
    }
    

      

    一勤天下无难事。
  • 相关阅读:
    k8s安装
    jinja +grains 取变量
    项目跨域问题
    Node.js做Web后端优势为什么这么大?
    Chrome使用技巧
    看完这篇操作系统吊打面试官
    几款国产操作系统的区别
    如果红军是一家公司,依然是最后的大赢家
    RPA AI .NET Core 与未来--学习笔记
    Oracle中MERGE INTO用法解析
  • 原文地址:https://www.cnblogs.com/nowroot/p/13645760.html
Copyright © 2011-2022 走看看