While循环故障和在C中重新分配char变量(初学者)

While循环故障和在C中重新分配char变量(初学者),c,while-loop,char,scanf,C,While Loop,Char,Scanf,嗨,这是我在这个网站上的第一篇文章,我刚刚开始为学校学习C语言编程。我试图寻找关于我具体问题的其他帖子,但被其他答案的复杂性弄得有些不知所措。(因此,如果这是多余的,我道歉) 我正在尝试编写一个代码,它接受4个输入数字,将它们向后打印给您,然后询问您是否希望使用y/n选项再次执行此操作。我需要一些帮助,让计算机读取用户的y/n输入,然后在此基础上继续/中断循环。这是我到目前为止的资料,但我有一些严重的错误,谢谢 #include <stdio.h> int main() {

嗨,这是我在这个网站上的第一篇文章,我刚刚开始为学校学习C语言编程。我试图寻找关于我具体问题的其他帖子,但被其他答案的复杂性弄得有些不知所措。(因此,如果这是多余的,我道歉)

我正在尝试编写一个代码,它接受4个输入数字,将它们向后打印给您,然后询问您是否希望使用y/n选项再次执行此操作。我需要一些帮助,让计算机读取用户的y/n输入,然后在此基础上继续/中断循环。这是我到目前为止的资料,但我有一些严重的错误,谢谢

#include <stdio.h>

int main()
{
    int  x[5];
    char choice;

    choice = 'y'; //Assigned choice to y//

    while (choice == 'y')
    {

        printf("Please input up to four numbers seperated for example, 1 2 3 4 : ");

        scanf_s("%d %d %d %d", &x[0], &x[1], &x[2], &x[3]);

        printf("Your entries in reverse order are %d %d %d %d\n", x[3], x[2], x[1], x[0]); //This is working// 

        printf("Would you like to enter another set of numbers?  <y/n>:");

        scanf_s(" %c", choice); //Want this line to get an input y/n and if y, repeat the loop and if n, end the program//

    } 

    printf("Goodbye\n");

    system("Pause");

    return 0 ;
}
#包括
int main()
{
int x[5];
字符选择;
choice='y';//将选项分配给y//
while(选项='y')
{
printf(“请输入最多四个分开的数字,例如,1 2 3 4:”);
扫描(“%d%d%d%d”、&x[0]、&x[1]、&x[2]、&x[3]);
printf(“您的条目按相反顺序是%d%d%d%d\n”、x[3]、x[2]、x[1]、x[0]);//这是有效的//
printf(“是否要输入另一组数字?:”;
scanf_s(“%c”,choice);//希望此行获得输入y/n,如果是,则重复循环,如果是,则结束程序//
} 
printf(“再见”);
系统(“暂停”);
返回0;
}

您需要将呼叫更改为
scanf\u s
,以便第二次获得以下输入:

scanf_s(" %c", &choice, 1);
请注意,1表示缓冲区大小


您需要将呼叫更改为
scanf_s
,以便第二次获得以下输入:

scanf_s(" %c", &choice, 1);
请注意,1表示缓冲区大小


您需要将呼叫更改为
scanf_s
,以便第二次获得以下输入:

scanf_s(" %c", &choice, 1);
请注意,1表示缓冲区大小


您需要将呼叫更改为
scanf_s
,以便第二次获得以下输入:

scanf_s(" %c", &choice, 1);
请注意,1表示缓冲区大小

应该是

scanf_s("%c", &choice, 1);
Scanf需要指向变量的指针。否则,scanf将无法为“选择”添加新值。 这是一个普遍的错误

编辑: 如果您搜索有关scanf_的更多信息,可以基于标准库中的scanf。 Scanf_s在功能上与Scanf完全相同。 唯一的区别是扫描更安全,因为它有额外的参数来确定变量的大小。

应该是这样的

scanf_s("%c", &choice, 1);
Scanf需要指向变量的指针。否则,scanf将无法为“选择”添加新值。 这是一个普遍的错误

编辑: 如果您搜索有关scanf_的更多信息,可以基于标准库中的scanf。 Scanf_s在功能上与Scanf完全相同。 唯一的区别是扫描更安全,因为它有额外的参数来确定变量的大小。

应该是这样的

scanf_s("%c", &choice, 1);
Scanf需要指向变量的指针。否则,scanf将无法为“选择”添加新值。 这是一个普遍的错误

编辑: 如果您搜索有关scanf_的更多信息,可以基于标准库中的scanf。 Scanf_s在功能上与Scanf完全相同。 唯一的区别是扫描更安全,因为它有额外的参数来确定变量的大小。

应该是这样的

scanf_s("%c", &choice, 1);
Scanf需要指向变量的指针。否则,scanf将无法为“选择”添加新值。 这是一个普遍的错误

编辑: 如果您搜索有关scanf_的更多信息,可以基于标准库中的scanf。 Scanf_s在功能上与Scanf完全相同。
唯一的区别是scanf_更安全,因为它有额外的参数来确定变量的大小。

首先学习缩进代码,这提高了很多可读性。改变

scanf_s(" %c", choice); 

将从代码中删除所有错误


`

首先,学习缩进代码,这将提高代码的可读性。改变

scanf_s(" %c", choice); 

将从代码中删除所有错误


`

首先,学习缩进代码,这将提高代码的可读性。改变

scanf_s(" %c", choice); 

将从代码中删除所有错误


`

首先,学习缩进代码,这将提高代码的可读性。改变

scanf_s(" %c", choice); 

将从代码中删除所有错误


`

“严重错误”-告诉我们错误是什么。运行时错误还是编译器错误?编译器消息是诊断信息,因此当要求某人诊断问题时,如果您提供该信息,则会很有帮助(甚至礼貌)。与问题无关,但您可以在声明时初始化
choice
,而不是在声明后赋值:
char choice='y'我建议使用
do while
循环来对抗
while
循环。这样您就不必在开始时设置
choice
的值。以后将发布错误代码,感谢您帮助我简化char变量“bad errors”-告诉我们它们是什么。运行时错误还是编译器错误?编译器消息是诊断信息,因此当要求某人诊断问题时,如果您提供该信息,则会很有帮助(甚至礼貌)。与问题无关,但您可以在声明时初始化
choice
,而不是在声明后赋值:
char choice='y'我建议使用
do while
循环来对抗
while
循环。这样您就不必在开始时设置
choice
的值。以后将发布错误代码,感谢您帮助我简化char变量“bad errors”-告诉我们它们是什么。运行时错误还是编译器错误?编译器消息是诊断信息,因此当要求某人诊断问题时,如果您提供该信息,则会很有帮助(甚至礼貌)。与问题无关,但您可以在声明时初始化
选项
,而不是在声明后分配: