代码之家  ›  专栏  ›  技术社区  ›  o01

确定argv[1]中的字符串是否以字符或数字开头(C-编程)

  •  0
  • o01  · 技术社区  · 16 年前

    我在用C编写一个小应用程序,它有两个参数。一个是文件名,另一个是数字,可以按随机顺序指定。

    ./主文件名12345

    和

    /main 12345文件名

    两个都能用。

    当我知道文件名以字符开头时,如何轻松确定哪个是哪个?

    5 回复  |  直到 16 年前
        1
  •  11
  •   Keith Randall    16 年前

    您可以使用 isalpha 和 isdigit 功能(定义于 ctype.h )关于的第一个字符 argv[1] 或 argv[2] .

        2
  •  6
  •   R Samuel Klatchko    16 年前

    您可以使用ctype函数。

    if (isalpha(*argv[1]))
        // argv[1] starts with a letter
    else if (isdigit(*argv[1])
        // argv[1] starts with a number
    
        3
  •  2
  •   avakar    16 年前

    使用 isdigit .

    isdigit((unsigned char)argv[1][0])
    

    一定要检查一下 argc 第一。

        4
  •  1
  •   rlbond    16 年前
    if ('0' <= argv[1][0] && argv[1][0] <= '9')
    {
        /* it starts with a number */
    }
    
        5
  •  0
  •   Leo Martins    16 年前

    您也可以使用 sscanf() 函数,返回成功扫描的项目数:

    int number;
    char *string;
    
    if (sscanf (argv[1], " %d ", &number) == 1) { /*12345 filename */
      string = malloc ((strlen (argv[2]) + 1) * sizeof (char));
      sscanf (argv[2], " %s ", string);
    }
    else { /* filename 12345 */
      sscanf (argv[2], " %d ", &number);
      string = malloc ((strlen (argv[1]) + 1) * sizeof (char));
      sscanf (argv[1], " %s ", string);
    }
    

    如果 argv[1] 是以字符开头的字符串,第一个子句将返回“零”。

    推荐文章