C语言 命令行argv在调试期间未显示(使用github代码空间)

zzoitvuj  于 2023-02-07  发布在  Git
关注(0)|答案(1)|浏览(147)

当我输入debug 50 Caeser 1024到我的代码空间时,argc显示为2,这是正确的,但argv显示为0x 7 ffd 87 a68798 as shown here和idk,为什么它不显示为1024?
这是我第一次使用命令行参数,所以会很感激任何帮助,请。
这是我的代码到目前为止也将感谢任何检查我的函数我认为这是错误的,以及:/

#include <cs50.h>
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>

bool only_digit(string argv[1]);

int main(int argc, string argv[])
{
    //Make sure program was run with command line argument (argc)

    if (argc == 2){
        return 0;
    }
    else{
        printf("Usage: ./caesar key\n");
        return 1;
    }

    }
    //Make sure every character in argv[1] is a number

     bool only_digit(string argv[1]){

        if (isdigit((*argv[1]))){
            return true;
        }
        else{
            return false;
        }
     }
jvlzgdj9

jvlzgdj91#

你应该先检查参数的数量是否与你期望的不匹配,如果不匹配就返回。
此外,您还应该学习如何使用参数正确地声明/定义函数。argv[1]意味着您需要一个大小为1的字符串数组。
此外,您的函数可以是单个return语句。

#include <cs50.h>
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>

bool only_digit(string s);

int main(int argc, string argv[]) {
    // Make sure program was run with command line argument (argc)

    if (argc != 2)  {
        printf("Usage: ./caesar key\n");
        return 1;
    }
    printf("%d\n", only_digit(argv[1]));
}
// Make sure every character in argv[1] is a number

bool only_digit(string s) {
    return isdigit(*s);
}

相关问题