While循环出现问题,并在C中重新分配了一个char变量(初学者)



嗨,这是我在这个网站上的第一篇文章,我刚刚开始为学校学习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 %dn", 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("Goodbyen");
    system("Pause");
    return 0 ;
}

您需要将调用更改为scanf_s才能第二次获得以下输入:

scanf_s(" %c", &choice, 1);

请注意,1表示缓冲区大小。

来自MSDN

In the case of characters, a single character may be read as follows:
char c;
scanf_s("%c", &c, 1);

应该是

scanf_s("%c", &choice, 1);

扫描程序需要指向变量的指针。否则,scanf将无法为"选择"设置新值。这是一个普遍的错误。

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

首先要学会缩进代码,这样可以提高很多可读性。更改

scanf_s(" %c", choice); 

scanf(" %c", &choice);

将从代码中删除所有错误。

`

相关内容

  • 没有找到相关文章

最新更新