gpt4 book ai didi

c - 选择选项时菜单中出现段错误?

转载 作者:行者123 更新时间:2023-11-30 14:33:07 26 4
gpt4 key购买 nike

在检查语法程序的菜单部分,我遇到了段错误,我有3个变量:

int c, Option;
char menu[MAXCHAR];

它们在菜单中使用,c 在 entertext(c) 部分中使用以检查语法。菜单用作选择,使程序能够重复显示菜单,只要用户不希望程序退出:

printf("------------MENU------------\n");
printf("Option 1: Enter text.\n");
scanf("%d\n", Option);
if (Option == 1){
entertext(c);
}else{
printf("Invalid Option");
}

printf("Would you like to quit the program? \n");
scanf("%s", menu);

while (menu == "no" || menu == "No" || menu == "NO"){
printf("------------MENU------------\n");
printf("Option 1: Enter text.\n");
scanf("%d\n", Option);
if (Option == 1){
entertext(c);
}else{
printf("Invalid Option");
}

printf("Would you like to quit the program? \n");
scanf("%s", menu);

brace = bracket = parenthesis = 0;
}

最佳答案

当使用scanf读取整数时,需要将目标变量的地址作为参数。因此,您应该使用 scanf("%d\n", &Option); 而不是 scanf("%d\n", Option); (两次,在您的代码)。

(在读取 menu 变量的情况下,不需要 &,因为 menu 是一个数组,作为函数调用参数,将隐式衰减为指针。)

此外,您无法使用 == 运算符比较 C 字符串 - 您需要使用 strcmp 函数。所以,而不是:

while (menu == "no" || menu == "No" || menu == "NO"){

用途:

while (!strcmp(menu,"no") || !strcmp(menu,"No") || !strcmp(menu,"NO")){

(! 检查返回值是否为零 - 如果字符串相同,则返回值为零。)

关于c - 选择选项时菜单中出现段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59500554/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com