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

时间:2009-11-07 16:43:11

标签: c string parameters argv

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

  

./ main filename 12345

  

./ main 12345 filename

应该都有效。

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

5 个答案:

答案 0 :(得分:11)

您可以在isalphaisdigit的第一个字符上使用ctype.hargv[1]函数(在argv[2]中定义)。

答案 1 :(得分:6)

您可以使用ctype函数。

if (isalpha(*argv[1]))
    // argv[1] starts with a letter
else if (isdigit(*argv[1])
    // argv[1] starts with a number

答案 2 :(得分:2)

使用isdigit

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

请务必先检查argc

答案 3 :(得分:1)

if ('0' <= argv[1][0] && argv[1][0] <= '9')
{
    /* it starts with a number */
}

答案 4 :(得分:0)

您还可以使用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]是以字符开头的字符串,则第一个子句将返回“零”。