当前位置: 首页 > news >正文

fgets()函数读取键盘,去掉换行符或丢弃多余的字符

在上一遍随笔中,我们知道可以用fgets()函数来代替不安全的gets()函数。fgets函数中的第二个参数限制了读取的个数。

上篇文章也提到,fgets是会读取回车换行符的。有时候我们并不希望在字符串中存在换行符。有的时候我们在一行中多输入了几个字符,而这几个字符并不是我们想要的。这时可以写一个小程序解决这个问题

下面看程序(来自于C Primer Plus 第六版):该程序的功能是:读取输入行,删除存在字符串中的换行符,如果没有换行符,则丢弃数组装不下的字符。

#include <stdio.h>
#include <stdlib.h>
#define NUM 5
#define SIZE 10
int main(int argc,char* argv[])
{
    char src[NUM][SIZE];
    printf("请输入,空行表示结束\n");
    int i=0;
    while(    (  fgets(src[i],SIZE,stdin) ) !=  NULL    &&   src[i][0]!='\n'    )
    {
        int j=0;
        while(  (src[i][j] != '\n')   && (src[i][j]  !=   '\0' )  )
            j++;
        if(src[i][j] ==  '\n')
            src[i][j]='\0';
        else
        {
            while( getchar() !='\n'  )
                continue;
        }



        printf("输入为:%s\n",src[i]);
        i++;
        if(i>=5)
        {
            break;
        }
    }
    return 0;
}

 

转载于:https://www.cnblogs.com/qingergege/p/5925850.html

相关文章:

  • 解决Only a type can be imported. com.mysql.jdbc.Connection resolves to a package的报错问题
  • Java_I/O输入输出_使用输入输出流读取文件,将一段文字加密后存入文件,然后读取,将加密前与后的文件输出...
  • Servlet类源码说明
  • 连接 insance 到 vlan101 - 每天5分钟玩转 OpenStack(97)
  • 15、限定词
  • Automated Memory Analysis
  • 5.openstack之mitaka搭建计算节点
  • 改变Chrome浏览器主程序_缓存_个人信息路径
  • Xtreme9.0 - Car Spark 动态规划
  • java 计算距离现在几分,几个小时,几天
  • pragma
  • VC/MFC使用OLE操作 EXCEL
  • js定时器的使用(实例讲解)
  • 1 storm基本概念 + storm编程规范及demo编写
  • 清北学堂模拟day6 花
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • Angular 响应式表单之下拉框
  • EventListener原理
  • JS 面试题总结
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • node-glob通配符
  • PHP 小技巧
  • React-Native - 收藏集 - 掘金
  • UMLCHINA 首席专家潘加宇鼎力推荐
  • Vue实战(四)登录/注册页的实现
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 技术胖1-4季视频复习— (看视频笔记)
  • 经典排序算法及其 Java 实现
  • 区块链分支循环
  • 消息队列系列二(IOT中消息队列的应用)
  • 译自由幺半群
  • gunicorn工作原理
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 组复制官方翻译九、Group Replication Technical Details
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • # 学号 2017-2018-20172309 《程序设计与数据结构》实验三报告
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • (33)STM32——485实验笔记
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (八)Spring源码解析:Spring MVC
  • (规划)24届春招和25届暑假实习路线准备规划
  • (三)终结任务
  • (四)c52学习之旅-流水LED灯
  • (转)编辑寄语:因为爱心,所以美丽
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • ./和../以及/和~之间的区别
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .NET 设计模式—适配器模式(Adapter Pattern)
  • .net反编译的九款神器
  • .NET简谈互操作(五:基础知识之Dynamic平台调用)
  • .net经典笔试题
  • .NET设计模式(11):组合模式(Composite Pattern)
  • /dev下添加设备节点的方法步骤(通过device_create)
  • @DataRedisTest测试redis从未如此丝滑