C/C++中的输入与输出及如何读取一行文本

本文详细介绍了C/C++中的输入输出,包括格式化输入输出、字符输入输出、二进制输入输出。重点讲解了读取一行文本的方法,如C语言中的fgets、gets和Linux扩展的getline,以及C++中的getline和cin.getline。讨论了不同函数的特性和适用场景,强调了安全性与效率的选择。
摘要由CSDN通过智能技术生成

在使用C/C++进行编程的过程中,经常会遇到输入输出的问题。

对于C语言中,

1. 格式化输入输出。

在C语言中,最常用的格式化输入输出是scanf和printf函数。

和这两个函数对应的更安全的函数是fscanf和fprintf:指定文件指针

对于字符串的处理还有sscanf和sprintf:指定字符串

声明如下:

int printf(const char *format, ...);

int fprintf(FILE *stream, const char *format, ...);

int sprintf(char *str, const char *format, ...);

int snprintf(char *str, size_t size, const char *format, ...);

 

int scanf(const char *format, ...);

int fscanf(FILE *stream, const char *format, ...);

int sscanf(const char *str, const char *format, ...);

 

2. 字符输入输出

出了这些格式化输入输出函数之外,还有很多针对字符输入输出的函数:

包括getc,getchar,gets,fgetc,fgets,putc,putchar,puts,fputc,fputs。

首先单个字符输入/输出函数对应的声明如下:

int fgetc(FILE *stream); int getc(FILE *stream);

从文件中读入一个字符,返回值就是读入的字符,如果错误返回EOF。

这两个函数具有相同的效果,但是getc是宏,而fgetc是函数。程序员常用这个宏,因为它比调用函数更快。

int fputc(int c,FILE*stream); int putc(int c,FILE*stream);

输出字符到文件。返回输出的字符(转化为int型),如果错误返回EOF。

putc也是宏实现的。

int getchar(void),int putchar(int c)

这两个也是宏实现,主要是从标准输入输出读取或输出字符。等同于getc(stdin)和putc(c,stdout)

其次是多个字符/字符串的输入/输出函数对应的声明:

char *fgets(char *s, int size, FILE *stream);char *gets(char *s);

读入字符串,fgets适合取代gets,因为gets无法限制读取字符的个数。gets是直接从标准输入读取。

fgets从流中读入最多n-1个字符,最后加一个空字符作为字符串结尾标记。如果在读到最大个数的字符之前遇到了一个换行字符或者文件结尾,那么只有目前所读入的字符会被放入到缓冲区中,如果读到换行符'\n',那么此字符也会被放入到缓冲区中。

返回值为读入的字符串,如果出错,返回值为NULL

int fputs(const char *s,FILE*stream); int puts(const char*s);

返回输出的字符的个数,如果出错,返回EOF。

需要注意的是fgets保留换行符'\n',而gets是从stdin输入,在读取字符串时会删除结尾的换行符'\n';

同样,fputs写入时不包括换行符,而puts在写入字符串时会在末尾添加一个换行符。

 

3. 二进制输入输出

对于二进制的输入输出,主要采用fread和fwrite函数,这个比较单一。

声明如下:

size_t fread(void *ptr, size_t si

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值