标签:换行 其他 跳过 读取 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,然后跳过换行符,指向下一行内容。
标签:换行 其他 跳过 读取 tab orm const 指针 一个
原文地址:https://www.cnblogs.com/luyi07/p/9527692.html