鱼C论坛

 找回密码
 立即注册
查看: 3150|回复: 10

为什么gets总是返回NULL 并且循环还不执行?

[复制链接]
发表于 2018-2-7 10:07:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 a1296715528 于 2018-2-7 11:31 编辑

刚学了文件,编了个图书馆,然后发现个bug...  大佬  请出招

  1. Int auth(void)
  2. {       
  3.         char ch[128];

  4.         fp1 = fopen("keyboard.dat", "r+b");
  5.        
  6.         printf("请输入密码:");
  7.         while (gets(ch) == NULL);
  8.         {
  9.                 printf("输入失败,请重新输入\n");
  10.         }
  11.         getch();
  12.        
  13.         rewind(fp1);
  14.         fread(c, sizeof(ch), 1, fp1);
  15.        
  16.         fclose(fp1);
  17.         return strcmp(ch, c);
  18.        
  19. }
复制代码


但是不循环?直接执行后面的代码

但是不循环?直接执行后面的代码

返回NULL

返回NULL
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-2-7 10:11:23 | 显示全部楼层
ch没定义,gets需要接受一个地址作为参数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-7 11:31:03 | 显示全部楼层
BngThea 发表于 2018-2-7 10:11
ch没定义,gets需要接受一个地址作为参数

哦哦哦 我忘了加了   ch 是全局变量
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-7 11:33:47 | 显示全部楼层
a1296715528 发表于 2018-2-7 11:31
哦哦哦 我忘了加了   ch 是全局变量

那就 &ch
还是少用gets吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-7 12:29:50 | 显示全部楼层
BngThea 发表于 2018-2-7 11:33
那就 &ch
还是少用gets吧

......  ch是数组,不用取址
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-7 12:37:53 | 显示全部楼层
a1296715528 发表于 2018-2-7 12:29
......  ch是数组,不用取址

可能你是代码其他部分有输入,导致输入流中存在字符,gets失败
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-7 13:44:27 | 显示全部楼层
本帖最后由 最终的执念 于 2018-2-7 13:46 编辑

用scanf试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-9 11:36:27 | 显示全部楼层
BngThea 发表于 2018-2-7 12:37
可能你是代码其他部分有输入,导致输入流中存在字符,gets失败

不对欸  就算用局部变量也不行,也是返回NULL
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-2-9 11:37:22 | 显示全部楼层

scanf不支持空字符的输入  这样.....怎么说呢! 感觉少了点什么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-2-17 10:00:11 | 显示全部楼层
a1296715528 发表于 2018-2-9 11:37
scanf不支持空字符的输入  这样.....怎么说呢! 感觉少了点什么

fgetc 自己输入字符串
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-2-10 21:04:23 | 显示全部楼层
可以用字符串比较函数strcmp或者ctrncmp
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-27 06:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表