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的整个问题变得毫无意义。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/395260.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2016.08.19

转载于:https://www.cnblogs.com/hiramlee0534/p/5789453.html

服务器上运行arp,服务器ARP病毒的特征及防护说明

服务器ARP病毒的特征及防护说明更新时间:2008年01月29日 15:50:33 作者:服务器ARP病毒的特征及防护说明近期有些用户反映服务器上所有网站被插入了病毒代码,但是这些病毒代码在服务器的源文件上并不能找到,因此,网管想清理病毒也无从下手,这是什么原因…

使用React Native进行气泡动画

by Narendra N Shetty由纳伦德拉N谢蒂(Narendra N Shetty) 使用React Native进行气泡动画 (Bubble animation with React Native) 使用Animated和PanResponder构建React Native应用程序时获得的经验教训 (Lessons learned while building a React Native App using Animated a…

Machine Learning from Start to Finish with Scikit-Learn

2019独角兽企业重金招聘Python工程师标准>>> Machine Learning from Start to Finish with Scikit-Learn This notebook covers the basic Machine Learning process in Python step-by-step. Go from raw data to at least 78% accuracy on the Titanic Survivors …

Excel 宏编码实现,指定列的字符串截取

1、打开Excel凭证,启用宏,ALTF11 或 菜单“视图”-"宏-查看宏" Sub 分割字符串1() Dim i As Integer Dim b() As String Dim length 用length表示数组的长度 Dim sublength Dim bb() As String 筛选日期 2 点 For i 2 To 20000 b() Split(Ce…

mysql for update 锁_MySql FOR UPDATE 锁的一点问题……

问题描述假设一个情况,这里只是假设,真实的情况可能不会这样设计,但是假如真的发生了....铁老大有一张这样的ticket表,用来存放北京到上海的票。iduidstart_addrend_addrbook_time11300009860上海北京1386666032120上海北京30上海…

服务器机房新风系统,某机房新风系统设计方案参考

《某机房新风系统设计方案参考》由会员分享,可在线阅读,更多相关《某机房新风系统设计方案参考(3页珍藏版)》请在人人文库网上搜索。1、某机房新风系统设计方案参考根据以上要求并结合中华人民共和国电子计算机机房的设计规范,为保证机房正压…

css 画三角形

CSS三角形绘制方法#triangle-up {width: 0;height: 0;border-left: 50px solid transparent;border-right: 50px solid transparent;border-bottom: 100px solid red;}#triangle-down {width: 0;height: 0;border-left: 50px solid transparent;border-right: 50px solid trans…

面试官面试前端_如何面试面试官

面试官面试前端by Aline Lerner通过艾琳勒纳(Aline Lerner) 如何面试面试官 (How to interview your interviewers) For the last few semesters, I’ve had the distinct pleasure of guest-lecturing MIT’s required technical communication class for computer science m…

shell 字符串分割

语法1: substring${string:start:len} string的下标从0开始,以start可是,截取len个字符,并赋值于substring 1 #!/bin/bash 2 #substr${string:start:len} 3 str"123456789" 4 substr${str:3:3} 5 echo $substr 6 7 输出&#xff1…

方格取数(网络流)

题目链接:ヾ(≧∇≦*)ゝ 大致题意:给你一个\(n*m\)的矩阵,可以取任意多个数,但若你取了一个数,那么这个数上下左右的数你就都不能取,问能取到的最大值是多少。 Solution: 首先,我们可以把矩阵上…

mysql创建的数据库都在哪里看_mysql 怎么查看创建的数据库和表

1、 //看当前使用的是哪个数据库 ,如果你还没选择任何数据库,结果是NULL。mysql>select database(); ------------ | DATABASE() | ------------ | menagerie | ------------2、//查看有哪些数据库 mysql> show databases;--------------------| Database …

wordpress 基础文件

需要用到的PHP基础文件有&#xff1a; 404.php404模板 rtl.css 如果网站的阅读方向是自右向左的&#xff0c;会被自动包含进来comments.php 评论模板single.php文章模板。显示单独的一篇文章时被调用&#xff0c;如果模板不存在会使用 index.phpsingle-<post-type>.php自…

ajax请求 apend,jsp如何获取ajax append的数据?

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼我在网上下了个上传图片的js&#xff0c;我想上传图片的时候还提交一些参数&#xff0c;但是后台用request.getParameter("th");获取出来是nullfunction uploadSubmitHandler () {if (state.fileBatch.length ! 0) {var …

linux 机器格式化_为什么机器人应该为我们格式化代码

linux 机器格式化by Artem Sapegin通过Artem Sapegin 为什么机器人应该为我们格式化代码 (Why robots should format our code for us) I used to think that a personal code style is a good thing for a programmer. It shows you are a mature developer who knows what g…

Pytest高级进阶之Fixture

From: https://www.jianshu.com/p/54b0f4016300 一. fixture介绍 fixture是pytest的一个闪光点&#xff0c;pytest要精通怎么能不学习fixture呢&#xff1f;跟着我一起深入学习fixture吧。其实unittest和nose都支持fixture&#xff0c;但是pytest做得更炫。 fixture是pytest特有…

mysql 慢日志报警_一则MySQL慢日志监控误报的问题分析

之前因为各种原因&#xff0c;有些报警没有引起重视&#xff0c;最近放假马上排除了一些潜在的人为原因&#xff0c;发现数据库的慢日志报警有些奇怪&#xff0c;主要表现是慢日志报警不属实&#xff0c;收到报警的即时通信提醒后&#xff0c;隔一会去数据库里面去排查&#xf…

用css实现自定义虚线边框

开发产品功能的时候ui往往会给出虚线边框的效果图&#xff0c;于是乎&#xff0c;我们往往第一时间想到的是用css里的border&#xff0c;可是border里一般就提供两种效果&#xff0c;dashed或者dotted&#xff0c;ui这时就不满意了&#xff0c;说虚线太密了。废话不多说&#x…

无限复活服务器,绝地求生无限复活模式怎么玩 无限复活新手教程

相信不少的绝地求生玩家们最近都听说了其无限复活模式吧?因此肯定想要知道这种模式究竟该怎么玩&#xff0c;所以下面就来为各位带来此玩法的攻略相关&#xff0c;希望各位在看了如下的内容之后恩呢狗狗了解到新手教程攻略一览。“War”模式的设定以及玩法规则如下&#xff1a…

lua math.random()

math.random([n [,m]]) 用法&#xff1a;1.无参调用&#xff0c;产生[0, 1)之间的浮点随机数。 2.一个参数n&#xff0c;产生[1, n]之间的整数。 3.两个参数&#xff0c;产生[n, m]之间的整数。 math.randomseed(n) 用法&#xff1a;接收一个整数n作为随即序列的种子。 例&…