为什么gets总是返回NULL 并且循环还不执行?
本帖最后由 a1296715528 于 2018-2-7 11:31 编辑刚学了文件,编了个图书馆,然后发现个bug...大佬请出招
Int auth(void)
{
char ch;
fp1 = fopen("keyboard.dat", "r+b");
printf("请输入密码:");
while (gets(ch) == NULL);
{
printf("输入失败,请重新输入\n");
}
getch();
rewind(fp1);
fread(c, sizeof(ch), 1, fp1);
fclose(fp1);
return strcmp(ch, c);
}
ch没定义,gets需要接受一个地址作为参数 BngThea 发表于 2018-2-7 10:11
ch没定义,gets需要接受一个地址作为参数
哦哦哦 我忘了加了 ch 是全局变量 a1296715528 发表于 2018-2-7 11:31
哦哦哦 我忘了加了 ch 是全局变量
那就 &ch
还是少用gets吧 BngThea 发表于 2018-2-7 11:33
那就 &ch
还是少用gets吧
......ch是数组,不用取址 a1296715528 发表于 2018-2-7 12:29
......ch是数组,不用取址
可能你是代码其他部分有输入,导致输入流中存在字符,gets失败 本帖最后由 最终的执念 于 2018-2-7 13:46 编辑
用scanf试试 BngThea 发表于 2018-2-7 12:37
可能你是代码其他部分有输入,导致输入流中存在字符,gets失败
不对欸就算用局部变量也不行,也是返回NULL 最终的执念 发表于 2018-2-7 13:44
用scanf试试
scanf不支持空字符的输入这样.....怎么说呢! 感觉少了点什么{:5_109:} a1296715528 发表于 2018-2-9 11:37
scanf不支持空字符的输入这样.....怎么说呢! 感觉少了点什么
fgetc 自己输入字符串 可以用字符串比较函数strcmp或者ctrncmp
页:
[1]