fgets阻塞 stdin 退出_来自stdin问题的fgets[c]
我试过你的代码,但无法重现问题。以下代码的工作方式正是您所期望的,它会提示您输入名称,等待您键入名称,然后提示您输入地址,等等。
我想知道你是否不需要在提示输入更多信息之前阅读stdin并清空它?
typedef struct {
char* name;
char* address;
}employeeRecord;
int readrecord(employeeRecord &record)
{
char name[50];
char address[100];
printf("\nenter the name:");
fgets(name, sizeof(name), stdin);
record.nameLength = strlen(name) + 1;
record.name = malloc(sizeof(char)*record.nameLength);
strcpy(record.name,name);
printf("\nenter the address:");
fgets(address, sizeof(address), stdin);
...
}
顺便说一句,您想在strlen(name)中加1,而不是减去1。或者,如果希望名称存储在记录中而不带终止空值,则需要使用memcpy将字符串复制到记录中,而不是strcpy。
编辑:
我从你的评论中看到
scanf
要读取选择值,这将在输入缓冲区中留下一个,然后由第一个
fgets
打电话。相反,您应该使用fgets读取选择行,然后使用sscanf解析输入中的值。这样地
int choice;
char temp[50];
fgets(temp, sizeof(temp), stdin);
sscanf(temp, "%d", &choice);
这应该会使冲洗stdin的整个问题变得毫无意义。
fgets阻塞 stdin 退出_来自stdin问题的fgets[c]相关推荐
- fgets阻塞 stdin 退出_linux fgets 阻塞
当前位置:我的异常网» 热门搜索 » linux fgets 阻塞 linux fgets 阻塞 www.myexceptions.net 网友分享于:2013-09-23 搜索量:159次 场 ...
- qt定时器是阻塞的吗_吊打面试官 | 面试官:TCP真的可靠吗
点击蓝字关注我哦 以下是本期干货视频视频后还附有文字版本哦 ▼<面试官:TCP真的可靠吗>▼ ps:请在WiFi环境下打开,如果有钱任性请随意 TCP真的可靠吗 面试官经常会问的一个问题是 ...
- stdin.php 木马,php STDIN - mickelfeng的个人空间 - OSCHINA - 中文开源技术交流社区
最近在看perl,觉得perl的标准输入挺好的,就想找找看PHP的,原来PHP也有类似的啊,我真OUT了 while($str = fread(STDIN,1000)){ echo "you ...
- c语言中gets与fgets,gets和fgets函数及其区别,C语言gets和fgets函数详解
每当讨论 gets 函数时,大家不由自主地就会想起 1988 年的"互联网蠕虫",它在 UNIX 操作系统的 finger 后台程序中使用一个 gets 调用作为它的攻击方式之一. ...
- gets和fgets函数及其区别,C语言gets和fgets函数详解
gets和fgets函数及其区别,C语言gets和fgets函数详解 每当讨论 gets 函数时,大家不由自主地就会想起 1988 年的"互联网蠕虫",它在 UNIX 操作系统的 ...
- fgets阻塞 stdin 退出_fgets()用法笔记
为了避免缓冲区溢出,从终端读取输入时应当用fgets()代替gets()函数. 但是这也将带来一个问题,因为fgets()的调用格式是: fgets (buf, MAX, fp) fgets (buf ...
- linux密码stdin怎么用,如何使ssh接收来自stdin的密码
根据这篇文章,您可以执行以下操作: 创建一个使用SSH_ASKPASS打开ssh会话的命令(在man ssh上查找SSH_ASKPASS ) $ cat > ssh_session < e ...
- python连续输入直到回车退出_详解Python实现按任意键继续/退出的功能
前言 要实现该功能,需要的就是暂停程序.等待并捕捉用户的一个键盘输入,然后继续执行.Python 有内建的库能帮我们实现该功能,不过要区别对待 Windows 和 Linux. msvcrt中的 ge ...
- python 提示按任意键退出_详解Python实现按任意键继续/退出的功能
前言 要实现该功能,需要的就是暂停程序.等待并捕捉用户的一个键盘输入,然后继续执行.Python 有内建的库能帮我们实现该功能,不过要区别对待 Windows 和 Linux. msvcrt 中的 g ...
最新文章
- JavaScript 学习中的帮助记忆(日积月累)
- SGU 185 Two shortest
- qt-信号和槽的连接写法
- 在vue文件引入echarts_vue文件中使用echarts.js的两种方式
- netstat(win)
- Ubuntu:查询计算机软硬件信息
- 【Head First 设计模式】-简单工厂模式读后总结
- 【概率论基础】机器学习领域必知必会的12种概率分布(附Python代码实现)
- 被裁员和降薪,你选哪个?
- 九度oj 题目1325:Battle Over Cities
- 小爱音箱mini系统故障怎么办_Win7系统连接小爱音箱mini的方法【图文】
- 【渝粤教育】广东开放大学 插画与漫画 形成性考核 (27)
- 鸿蒙系统共享电脑文件,鸿蒙Hi3516通过NFS挂载方式与Windows共享文件
- Unity模拟榴弹运动轨迹
- MATLAB学习笔记 plotyy双y轴
- css加号图标_css样式画加号和减号(+和-)效果
- CF Bottles 0-1背包
- ArrayList,LinkedList,Vector三者的异同
- 优秀网页翻译:高精度 10MHz GPS 驯服钟 (GPSDO) - Part3
- python列表前加星号是什么_Python中的星号:用途及使用方法(1)
热门文章
- ie8 ajaxSubmit 上传文件提示下载
- Nginx平滑升级到最新版本
- day01语法python入门_2
- vue13过滤器 debounce延迟、limitBy、filterBy、orderBy
- Redis 它是什么?它用来做什么?它的优势与短板如何?
- Java初级笔记-第五章
- 该Tiled地图制作拿到项目~~这是偷懒,为了直接复制后写来
- 安装了一次Linux,哈哈
- 计算机主板各模块复位,电脑主板复位电路工作原理分析
- 高版本(3.9版本)python在anaconda安装opencv库及skimage库(scikit_image库)诸多问题解决办法