码迷,mamicode.com
首页 > 编程语言 > 详细

C++ fscanf 读取一整行

时间:2018-08-24 10:46:10      阅读:531      评论:0      收藏:0      [点我收藏+]

标签:换行   其他   跳过   读取   tab   orm   const   指针   一个   

scanf, fscanf很相似,都是从流中读取输入,然后赋值给变量

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

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

 

%c 单一字符

%[] 一个字符集

* 输入项读入后跳过,不赋予任何变量

 

scanf, fscanf 自动跳过tabs和空格,其他字符赋予变量,返回成功赋值的变量数(整数),发生错误时返回EOF

 

%[^\n] 表示读取一整行,^ 表示 “非”,前面提到 %[] 表示一个字符集,所以 %[^\n] 表示“遇到一个换行符之前的所有字符的集合”,随后就结束读入。

 

但是这么做以后,那个换行符还没有读取。

 

前面提到了,* 表示输入项读入后跳过,所以 %*c 表示读入一个字符,但不赋值给任何变量,所以可以写

fscanf(fp, %[^\n]%*c, str)

其中 fp 是文件流指针,str是一个字符串变量,这句代码的意思就是:读取换行符之前的所有内容,赋值给str,然后跳过换行符,指向下一行内容。

C++ fscanf 读取一整行

标签:换行   其他   跳过   读取   tab   orm   const   指针   一个   

原文地址:https://www.cnblogs.com/luyi07/p/9527692.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!