【发布时间】:2020-07-09 22:51:11
【问题描述】:
我对编程非常陌生(大约 4 周前开始正确),我目前正在在线学习 CS50 课程。我似乎在第 2 周的问题集上遇到了一些障碍 - “Caesar”,我的 if 语句根本没有执行。
现在,程序应该在在命令行中输入数字时启动,即“./caesar 10”(最终将通过我的“键”,但还没有来得及实现)。它应该请求对明文进行加密,并且目前只对明文中的每个字符 +1。
即使所有布尔表达式都为真,程序也不会执行 if 语句。我已经通过 cs50 IDE 中的 debug50 功能运行它,一切看起来都正确,即 argc 的值为 2,当我在命令行输入“10”时,k 的值为“10”。
这两天我一直在尝试解决这个问题 - 但无济于事!任何建议将不胜感激。我已经尽我所能来解释这个问题,但这对我来说是全新的,就像我之前所说的那样。
提前感谢您的任何/所有帮助! :)
#include <stdio.h>
#include <cs50.h>
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, string argv[])
{
int k = atoi(argv[1]);
if (argc == 2 && isdigit(k))
{
string s = get_string("Plaintext: ");
for(int i = 0, n = strlen(s); i < n; i++)
{
printf("Cipertext: %c", s[i] + 1);
if (s[i] == ' ')
{
return 0;
}
}
}
else
{
printf("Usage: ./caesar key\n");
}
}
【问题讨论】:
-
isdigit用于处理字符。例如:isdigit('8');
标签: c if-statement cs50