【发布时间】:2020-06-27 09:11:34
【问题描述】:
为什么我的代码输出不正确(我只想接收整数作为键)?
在下面的代码中,我试图对计算机说的是'只接受 int's 作为密钥,否则拒绝密钥'。
int main(int argc, string argv[]) //command line argument
{
for ( int i = 0; i< strlen(argv[1]); i++)
{
if (argc != 2) //correct argument count
{
printf ("usage: ./caesar key\n");
return 1;
}
else if(isdigit(argv[1][i]))
{
printf("success\n");
}
else if(isalpha(argv[1][i]))
{
printf ("usage: ./caesar key\n");
return 1;
}
}
但是,当我尝试不同的输入来测试我的代码的准确性时,发生了以下情况:
~/caesar/ $ ./caesar 4r //<--mix of outputs.i don't want 'success' here bc input has a letter
success
usage: ./caesar key
~/caesar/ $ ./caesar g5 //correct output
usage: ./caesar key
~/caesar/ $ ./caesar r //correct output
usage: ./caesar key
如你所见,当我输入一个字母然后一个int,它工作正常,但是当我做相反的事情(int 然后是字母),它会给我一个混合输出,拒绝和接受输出。
【问题讨论】:
标签: c if-statement output command-line-arguments cs50