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
通常会给出一些未在任何地方定义的标识符的编译错误(或对象的无效类型,如果您包含了正确的头文件并且编译器有它的原型),请发送完整的可编译代码示例,并拒绝发送代码段。片段只反映了您对正在发生的事情的想法,而不是实际发生的事情(当然,在您的想法中可能不包括错误,这不是概念上的误解)