2 つのパラメーターを取る C で小さなアプリケーションを作成しています。1 つはファイル名、もう 1 つは番号で、ランダムな順序で指定できます。
./メイン ファイル名 12345
と
./main 12345 ファイル名
両方が機能するはずです。
ファイル名が文字で始まることがわかっている場合、どれがどれであるかを簡単に判断するにはどうすればよいですか?
2 つのパラメーターを取る C で小さなアプリケーションを作成しています。1 つはファイル名、もう 1 つは番号で、ランダムな順序で指定できます。
./メイン ファイル名 12345
と
./main 12345 ファイル名
両方が機能するはずです。
ファイル名が文字で始まることがわかっている場合、どれがどれであるかを簡単に判断するにはどうすればよいですか?
またはの最初の文字でisalpha
およびisdigit
関数 ( で定義)を使用できます。ctype.h
argv[1]
argv[2]
ctype 関数を使用できます。
if (isalpha(*argv[1]))
// argv[1] starts with a letter
else if (isdigit(*argv[1])
// argv[1] starts with a number
if ('0' <= argv[1][0] && argv[1][0] <= '9')
{
/* it starts with a number */
}
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]
文字で始まる文字列の場合、最初の句は「ゼロ」を返します。