fgets不复制第一个字母

时间:2016-07-18 10:02:04

标签: c fgets

我写了这段代码:

            check_name = 0;
            printf("Enter the Location of the photo:\n");
            fgets(location, MAX_LOCATION_SIZE, stdin);
            printf("Enter the name of the photo:\n");
            count = 0;
            while (check_name == 0)
            {
                if (count > 0)
                {
                    printf("The name is already in the list!\nChoose another one:\n"); // will not do it only for the first time
                }
                getchar;
                fgets(name, MAX_NAME_SIZE, stdin);
                check_name = checkName(frameList, name);
                count++;
            }

我将解释现在的一切:

我做了check_name因为我正在进行测试以检查名称是否已经在列表中(这对于这个问题并不重要,所以除非你真的需要,否则我不会上传代码它)

我将getchar放在fgets之前,因为没有它,它甚至不会要求提供名称。

每次我向fgets(entering a name)输入内容 它没有复制我的第一封信(如果我把Dexter放在外面)我已经检查过我给了它足够的地方(char name[50] - 我的老师告诉我这将是最大的)

1 个答案:

答案 0 :(得分:1)

getchar()将收到一个字符,其余字符可供fgets()使用。所以删除它。 如果你第一次丢失一个角色有问题...在循环之前放入getchar()。甚至你可以写scanf("%*c");