C fgets不复制第一个字母

C fgets不复制第一个字母,c,fgets,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 (chec

我写了这段代码:

            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++;
            }
我现在将解释什么是一切:

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

我把
getchar
放在
fgets
前面,因为没有它,它甚至不需要名字

每次我在
fgets(输入名称)
它没有复制我的第一个字母(如果我把Dexter放在它的保存外部),我已经检查过我是否给了它足够的位置(
char name[50]
-我的老师告诉我这将是最大值)

getchar()将接收一个字符,其余字符可供fgets()使用。所以把它去掉。
如果你在第一次失去一个角色时遇到问题。。。将getchar()置于循环之前。甚至你也可以写
scanf(“%*c”)

getchar
getchar()
???如果
getchar至少没有发出警告,您需要在编译器开关上提高警告级别。你应该得到一些“Expression result unused”或类似的效果。请发布你已经在本地运行和测试的完整可编译示例,以显示你遇到的确切问题。。。。或者我们可以花几个月的时间来寻找你在说什么(此外,你不知道错误在哪里,因此如果你不发布你所写的确切代码,你很难传输它)
getchar是一个具有未使用结果的表达式,不是函数调用。是。在给定的代码段中,它是一个表达式。但是问题是他正在使用getchar
我把“getchar”放在“fgets”之前,因为如果没有它,它甚至不会询问名称。
提示出现并使用一个字符。表达式无法使其发生,因此必须是调用。如果它是一个调用,那么就会出现这个问题。
getchar
通常会给出一些未在任何地方定义的标识符的编译错误(或对象的无效类型,如果您包含了正确的头文件并且编译器有它的原型),请发送完整的可编译代码示例,并拒绝发送代码段。片段只反映了您对正在发生的事情的想法,而不是实际发生的事情(当然,在您的想法中可能不包括错误,这不是概念上的误解)