繁体   English   中英

如何解决这个 gets() function 问题?

[英]How to solve this gets() function problem?

在我的程序中,如果我使用scanf() ,程序运行良好。 但很明显,如果遇到空格, scanf()将停止读取输入。 所以,我改用了gets() 但问题是我必须使用gets(name[i]); 两次。 如果我只使用一次,它会跳过“主题名称”输入并跳转到“成绩”输入。

你能告诉我问题出在哪里吗? 这是代码,我删除了几乎所有不相关的部分。

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

void selection1();

int main()
{
    int op;

    printf("\n\t\t\t\t\t\t\t\tCHOOSE A NUMBER FROM 0 to 4: ");
    scanf("%d", &op);
    switch(op)
    {
    case 0:
        exit(0);
        break;
    case 1:
        selection1();
        break;
    case 2:
        //selection2();
        break;
    case 3:
        //selection3();
        break;
    case 4:
        //selection4();
        break;
    default:
        printf("\t\t\t\t\t\t\t\tInvalid Selection!!!\n");
        break;
    }
    return 0;
}

void selection1()
{
    char name[20][50], grade[20][5];
    double credit[20][2];
    int i=0;

    for(;;)
    {
        printf("\t\t\t\t\t\t\t\tEnter Subject Name: ");
        gets(name[i]);
        //gets(name[i]);
        printf("\t\t\t\t\t\t\t\tEnter Grade: ");
        scanf("%s", &grade[i]);
        printf("\t\t\t\t\t\t\t\tEnter The Course Credits: ");
        scanf("%lf", &credit[i]);
    }
}

所以,我发现使用scanf(" %[^\n]%*c", &name[i]); 而不是gets(name[i]); 解决这个问题。 感谢所有发表评论的人。 您的评论帮助我得出了这个答案:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM