0

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

./主文件名 12345

./main 12345 文件名

两者都应该工作。

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

4

5 回答 5

11

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

于 2009-11-07T16:46:10.970 回答
6

您可以使用 ctype 函数。

if (isalpha(*argv[1]))
    // argv[1] starts with a letter
else if (isdigit(*argv[1])
    // argv[1] starts with a number
于 2009-11-07T16:47:09.737 回答
2

使用isdigit.

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

确保你先检查argc

于 2009-11-07T16:47:29.453 回答
1
if ('0' <= argv[1][0] && argv[1][0] <= '9')
{
    /* it starts with a number */
}
于 2009-11-07T16:46:00.843 回答
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]是以字符开头的字符串,则第一个子句将返回“零”。

于 2009-11-07T18:00:23.880 回答