【发布时间】:2021-08-19 04:55:26
【问题描述】:
我不明白为什么我的代码在命令行参数的第一个字符处停止。 我认为问题出在循环中,我需要它来检查命令行参数是否为数字,因此第一部分和第二部分并不重要。 谢谢你,对不起,我是新手。
int main(int argc, string argv[])
{
// checking if there is more than one command-line argument
if (argc != 2)
{
printf("Usage: ./caesar key\n");
return 1;
}
else
{
// checking if command-line argument is a number
for (int i = 0, n = strlen(argv[1]); i < n; i++)
{
printf("%c\n", argv[1][i]);
if (isdigit(argv[1][i]))
{
return 0;
}
else
{
printf("Usage: ./caesar key\n");
return 1;
}
}
}
}
【问题讨论】:
-
你从
main返回,程序结束。确定不是你的意思? -
不,不是,但是当我打印
argv[1][i]时,它只打印第一个字符。 -
那是因为你
return在if/else的所有情况下。这意味着程序每次都会在第一个循环/字符处终止。如果您不希望它终止,则至少将return语句之一更改为其他内容。您究竟希望isdigit真实案例做什么? -
记住
argc == 2表示程序有1参数。argv[0]始终是正在运行的可执行文件的名称...