我正处在这样一个阶段,我们需要正确地设置命令行参数,使其只接受数字,并在用户键入数字以外的任何内容时中断代码。(留空、输入两位数、输入文本、输入两段文本等)
因此,如果用户键入多个命令行参数或一个不是数字的命令行参数,我使程序正常工作。我的问题是,如果我将命令行参数留空,程序会给我一个分段错误,如果我键入像“1d”这样的单个命令行,它将无法正常工作。谁能告诉我哪里出了问题?我卡住了。以下是代码:
#include <cs50.h>
#include <stdio.h>
#include <ctype.h>
#include <string.h>
bool only_digits(string argv[]);
int main(int argc, string argv[])
{
bool digits = only_digits(argv);
if(argc != 2 || digits == false)
{
printf("Usage: ./caesar key\n");
return 1;
}
else
{
return 0;
}
}
bool only_digits(string argv[])
{
bool digit = false;
for(int i = 0; i < strlen(argv[1]); i++)
{
if(isdigit(argv[1][i]))
{
digit = true;
}
}
return digit;
}