C语言中的各种字符串输入方法
C语言从stdin读取一行字符串的几种方法
gets
gets函数的头文件是<stdio.h>,原型如下:
char *gets(char *s);
gets从stdin中读入一行内容到s指定的buffer中,当遇到换行符或EOF时读取结束。读取成功时,返回s地址;失败时返回null。需要注意的是,gets会将行末尾的'\n'字符或EOF替换成'\0',这样,gets读取的内容中不包括'\n'字符。如果要获取读取字符串的长度,可以调用strlen函数获得。
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- int main()
- {
- int size = 1024;
- char* buff = (char*)malloc(size);
- // read lines
- while(NULL != gets(buff)){
- printf("Read line with len: %d\n", strlen(buff));
- printf("%s", buff);
- }
- // free buff
- free(buff);
- }
fgets
fgets函数的头文件是<stdio.h>,原型如下:
char *fgets(char *s, int size, FILE*stream);
fgets从stream中读取最多size-1大小的内容到s指定的buffer中,当遇到换行符或EOF时读取结束。读取成功时,返回s地址;失败时返回null。需要注意的是,fgets会在所读取的内容后面添加'\0',这样,fgets读取的内容中会包括行末尾的'\n'字符。如果要获取读取字符串的长度,可以调用strlen函数获得。
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- int main()
- {
- int size = 1024;
- char* buff = (char*)malloc(size);
- // read lines
- while(NULL != fgets(buff, size, stdin)){
- printf("Read line with len: %d\n", strlen(buff));
- printf("%s", buff);
- }
- // free buff
- free(buff);
- }
getline
getline函数的头文件是<stdio.h>,原型如下:
ssize_t getline(char **lineptr,size_t *n, FILE *stream);
getline从stream中读取一行内容到*lineptr所指定的buffer中,当遇到换行符或EOF时读取结束。*n是*lineptr所指定的buffer的大小,如果*n小于读入的内容长度,getline会自动扩展buffer长度,并更新*lineptr和*n的值。读取成功时,返回读入的字符个数;失败时返回-1。需要注意的是,gelines读取的内容中会包括行末尾的'\n'字符
- #include <stdio.h>
- #include <stdlib.h>
- int
- main(void)
- {
- char *line = NULL;
- size_t len = 0;
- ssize_t read;
- while ((read = getline(&line, &len, stdin)) != -1) {
- printf("Retrieved line of length %zu, %u :\n", read, len);
- printf("%s", line);
- }
- free(line);
- exit(EXIT_SUCCESS);
- }
getline在C和C++中区别很大,C++存在重载的情况。http://www.cnblogs.com/xkfz007/archive/2012/08/01/2618366.html
C语言中的各种字符串输入方法的更多相关文章
- C语言中函数返回字符串的4中方法
C语言中函数返回字符串的4中方法 函数的构成部分:返回类型.函数名称.参数.函数主体 参数:函数调用时传入的参数称为实参,函数定义时出现的参数为形参 形参的作用在于接收实参传入的值,形参和函数内部的其 ...
- C/C++ 中带空格字符串输入的一些小trick
今天在重温 C++ 的时候发现自己存在的一些问题,特此记录下来. 我们可以看一下下面这段代码: #include <iostream> #include <cstdio> #i ...
- [翻译]python3中新的字符串格式化方法-----f-string
从python3.6开始,引入了新的字符串格式化方式,f-字符串. 这使得格式化字符串变得可读性更高,更简洁,更不容易出现错误而且速度也更快. 在本文后面,会详细介绍f-字符串的用法. 在此之前,让我 ...
- (数据科学学习手札131)pandas中的常用字符串处理方法总结
本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 在日常开展数据分析的过程中,我们经常需要对 ...
- C语言中函数返回字符串的四种方法
在讨论着四种方法之前,首先要对函数有一个简单的认识,无论是在形实结合时,还是在return语句返回时,都有一个拷贝的过程.你传进来的参数是个值,自然函数在工作之前要把这个值拷贝一份供自己使用,你传进来 ...
- C语言中字符数据的输入和输出
字符的输出 C语言中使用putchar函数来输出字符数据 #include <stdio.h> int main() { char a,b,c,d; //定义字符变量a,b,c,d a = ...
- ES6中的模板字符串使用方法
传统的 JavaScript 语言,输出模板通常是这样写的. $('#result').append( 'There are <b>' + basket.count + '</b&g ...
- C语言中常用的字符串处理函数总结
C语言中字符串处理函数备注 此文仅用于自己研究和记录 字符串处理函数 1. char *gets(char *s); #include<stdio.h> 功能: 从标准输入读入字符,并保存 ...
- javascript中数组和字符串的方法比较
× 目录 [1]可索引 [2]转换 [3]拼接[4]创建[5]位置 前面的话 字符串和数组有很多的相同之处,它们的方法众多,且相似度很高:但它们又有不同之处,字符串是不可变值,于是可以把其看作只读的数 ...
随机推荐
- 单片机stm32F103单片机晶振不起振的原因分析
这是我在做单片机最小系统板时候碰到的问题,之前虽然也做过相似的板子,可是未曾出现过无源晶振不起振的问题.下面是我在遇到问题后的一些检查,排除问题的过程.本人小菜鸟一个,文章中如有错误和不足,还望各位大 ...
- stm32电机控制之控制两路直流电机!看完你会了吗
手头上有一个差分驱动的小车,使用两个直流电机驱动,要实现小车的在给定速度下运动,完成直线行驶,转向,加速,刹车等复杂运动. 使用的电机是12v供电的直流电机,带编码器反馈,这样就可以采用闭环速度控制, ...
- 面试官问:说说你对Java函数式编程的理解
常见的面试问题 总结一下,在Java程序员的面试中,经常会被问到类似这样的问题: Java中的函数式接口是什么意思? 注解 @FunctionalInterface 的作用是什么? 实现一个函数式接口 ...
- 20191310李烨龙作业:MySort
作业:MySort 任务详情 1. 用man sort 查看sort的帮助文档 2. sort常用选项有哪些,都有什么功能?提交相关使用的截图 3. 如果让你编写sort,你怎么实现?写出伪代码和相关 ...
- sed 替换命令使用
输入文件不会被修改,sed 只在模式空间中执行替换命令,然后输出模式空间的内容.文本文件 employee.txt 101,John Doe,CEO 102,Jason Smith,IT Manage ...
- K8S在线部署含Dashborad
参考文章 https://www.kubernetes.org.cn/5462.html 前言 Kubernetes作为容器编排工具,简化容器管理,提升工作效率而颇受青睐.很多新手部署Kubernet ...
- Linux 启动/关闭 oracle 数据库
1.启动 1.1 启动监听 :lsnrctl start 1.2 启动数据库:sqlplus /nolog conn /as sysdba(或者两句一起:sqlplus sys/ as sysd ...
- Linux系统编程之进程控制(进程创建、终止、等待及替换)
进程创建 在上一节讲解进程概念时,我们提到fork函数是从已经存在的进程中创建一个新进程.那么,系统是如何创建一个新进程的呢?这就需要我们更深入的剖析fork函数. 1.1 fork函数的返回值 调用 ...
- 找第k个结点 剑指22
这道题很简单,利用双指针. 主要是以下几个注意点 1. 判断链表是否为空 2. 判断k是否为0,若为0无意义 3.判断k是否超出了链表长度 /** * Definition for singly-li ...
- MySQL高级篇 | MySQL逻辑架构
思维导图 架构逻辑视图 每个虚线框为一层,总共三层. 第一层:连接层,所包含的服务并不是MySQL所独有的技术.它们都是服务于C/S程序或者是这些程序所需要的 :连接处理,身份验证,安全性等等. 第二 ...