除了for循环之外,还有另一种方法可以检查它是否是Caesar Cipher中的整数吗? CS50 pset2 凯撒密码
Is there another way to check whether it's an integer in Caesar Cipher other than a for loop? CS50 pset2 Caesar Cipher
我试图通过遍历 argv[1] 中的每个字符并将它们放入 isdigit() 来检查 argv[1] 是否为整数。从技术上讲,它可以工作,但不完全是我想要的方式。
这是我的代码。
int main(int argc, string argv[])
{
if (argc != 2)
{
printf("Usage: ./caesar key\n");
return 1;
}
else
{
for (int i = 0; i < strlen(argv[1]); i++)
{
if( !isdigit(argv[1][i]))
{
printf("Usage: ./caesar key\n");
return 1;
}
else
{
printf("Sucess\n");
printf("%s\n", argv[1]);
}
}
}
}
Code
如您所见,通过遍历字符串,程序会为每个字符打印出一行新的响应。我想知道是否有另一种方法来验证输入并只打印一次响应?
$ ./caesar 20
Sucess
20
Sucess
20
$
$ ./caser xyz
bash: ./caser: No such file or directory
$ ./caesar 20
Sucess
20
Sucess
20
$ ./caesar xyz
Usage: ./caesar key
$ ./caesar 20x
Sucess
20x
Sucess
20x
Usage: ./caesar key
$
terminal
因为 return
退出函数,所以不需要在包含 return
的 if
分支之后使用 else
– 如果 if
路径被占用,if
保留 运行.
之后没有任何内容
int main(int argc, string argv[])
{
if (argc != 2)
{
printf("Usage: ./caesar key\n");
return 1;
}
for (int i = 0; i < strlen(argv[1]); i++)
{
if (!isdigit(argv[1][i]))
{
printf("Usage: ./caesar key\n");
return 1;
}
printf("Sucess\n");
printf("%s\n", argv[1]);
}
}
从那时起,当所有数字都已检查时,可能更容易看出在循环之后移动成功消息是安全的。
int main(int argc, string argv[])
{
if (argc != 2)
{
printf("Usage: ./caesar key\n");
return 1;
}
for (int i = 0; i < strlen(argv[1]); i++)
{
if (!isdigit(argv[1][i]))
{
printf("Usage: ./caesar key\n");
return 1;
}
}
printf("Success\n");
printf("%s\n", argv[1]);
}
我试图通过遍历 argv[1] 中的每个字符并将它们放入 isdigit() 来检查 argv[1] 是否为整数。从技术上讲,它可以工作,但不完全是我想要的方式。
这是我的代码。
int main(int argc, string argv[])
{
if (argc != 2)
{
printf("Usage: ./caesar key\n");
return 1;
}
else
{
for (int i = 0; i < strlen(argv[1]); i++)
{
if( !isdigit(argv[1][i]))
{
printf("Usage: ./caesar key\n");
return 1;
}
else
{
printf("Sucess\n");
printf("%s\n", argv[1]);
}
}
}
}
Code
如您所见,通过遍历字符串,程序会为每个字符打印出一行新的响应。我想知道是否有另一种方法来验证输入并只打印一次响应?
$ ./caesar 20
Sucess
20
Sucess
20
$
$ ./caser xyz
bash: ./caser: No such file or directory
$ ./caesar 20
Sucess
20
Sucess
20
$ ./caesar xyz
Usage: ./caesar key
$ ./caesar 20x
Sucess
20x
Sucess
20x
Usage: ./caesar key
$
terminal
因为 return
退出函数,所以不需要在包含 return
的 if
分支之后使用 else
– 如果 if
路径被占用,if
保留 运行.
int main(int argc, string argv[])
{
if (argc != 2)
{
printf("Usage: ./caesar key\n");
return 1;
}
for (int i = 0; i < strlen(argv[1]); i++)
{
if (!isdigit(argv[1][i]))
{
printf("Usage: ./caesar key\n");
return 1;
}
printf("Sucess\n");
printf("%s\n", argv[1]);
}
}
从那时起,当所有数字都已检查时,可能更容易看出在循环之后移动成功消息是安全的。
int main(int argc, string argv[])
{
if (argc != 2)
{
printf("Usage: ./caesar key\n");
return 1;
}
for (int i = 0; i < strlen(argv[1]); i++)
{
if (!isdigit(argv[1][i]))
{
printf("Usage: ./caesar key\n");
return 1;
}
}
printf("Success\n");
printf("%s\n", argv[1]);
}