C - 变得不工作

C - gets not working

我在使用 gets() 时遇到问题。 问题是它应该只在我没有使用的 vars 的警告下工作,但第一个只是跳到第二个。

int addClube(char *fileName)
{

        char qClube2[100], qClubeSimple[100], qEstadio[100], qCompleto[500],qAcronimo[100];
        int option=0;

        printf("\n  Indique o nome completo do clube:\n  (sem acentos)\n  ");
        gets(qClube2);

        printf("\n  Indique o nome simplificado do clube:\n  (sem acentos)\n  ");
        gets(qClubeSimple);

        printf("\n  Indique o acronimo do clube:\n  ");
        scanf("%s",qAcronimo);

        printf("\n  Indique o nome do estadio:\n  ");
        gets(qEstadio);

        return option;
}

函数启动时得到的输出:

Indique o nome completo do clube:
(sem acentos)

Indique o nome simplificado do clube:
(sem acentos)    

再次提前感谢您的帮助,如果您有更多信息请告诉我。

在所有 gets() Check This 之后尝试使用 fflush(stdin);; 另外,你为什么要使用这个选项 var for ?

如果您需要清除输入流,fflush(stdin) 不会 完成这项工作。据我了解,它适用于 Windows,但大多数其他系统(UNIX,Linux)是未定义的行为。

我是临时写的,所以它可能有效也可能无效,但本质上你需要丢弃所有你不想要的数据。以下从输入缓冲区中丢弃一行。

void clearinline(void)
{
    int c;
    do {
        c = getchar();
    } while(c != '\n' && c != EOF)
}