【发布时间】:2020-11-20 21:24:55
【问题描述】:
#include <stdio.h>
#include <cs50.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
int main(int argc, string argv[])
{
if (argc == 2)
{
string cmd = argv[1];
for (int i = 0, n = strlen(cmd); i<n ; i++)
{
if (isdigit(cmd[i]))
{
continue;
}
else
{
printf("Usage: %s key \n", argv[0]);
}
}
}
else
{
printf("Usage: %s key \n", argv[0]);
}
}
我正在学习 CS50 课程,并且遇到了“Pset2:Caesar”问题。我可以获取命令行参数并检查它们是否为数字。
我面临的问题是,在检查参数的有效性之后,我希望程序返回该值。我想检查给定的输入是否只是数字。如果是,我希望程序使用该数值参数值来计算密码。问题是_我使用循环来检查输入,我必须使用continue; 我很困惑,因为如果我删除continue;,程序将无法验证密钥的任务。
示例:如果我将continue; 替换为printf("True\n");,程序在输入20 后打印TrueTrue。输入20x 后,我得到TrueTrueUsage: ./Caesar key,而理想情况下,它应该只返回Usage: ./Caesar key。
【问题讨论】:
-
@kiner_shah 这是今年版本的问题。
-
您只需在
for循环内的else块中的printf之后添加return 1。此外,您不会从main返回任何整数 - 它的返回类型是int。 -
无需打印“True”。之前有
continue声明对吗?这是正确的——如果cmd[i]是一个数字,你需要使用continue。if (isdigit(cmd[i])) { continue; } else { printf("Usage: %s key\n", argv[0]); return 1; }
标签: c loops command-line-arguments cs50