为什么fscanf遇到0A就停下来了呢
本帖最后由 afio0166 于 2018-3-31 21:49 编辑不是说rb+是以二进制打开的吗
那遇到0A为什么会停止呢?
谢谢各位大佬
#include<stdio.h>
#include<conio.h>
int main(void)
{
FILE *fp;
if (!(fp = fopen("123.txt", "rb+")))
{
printf("打开失败");
}
char buffer;
fscanf(fp, "%s", buffer);
_getch();
return 0;
}
本帖最后由 ba21 于 2018-3-31 22:17 编辑
我是不知道你是用什么方法把空字符是怎么写入文本的(虽然我也能)。真心感觉是没事找事。
从一个流中执行格式化输入,fscanf遇到空格和换行时结束,注意空格时也结束。这里说得很清楚是空格
%s 是空字符也表示结束。
ba21 发表于 2018-3-31 21:46
我是不知道你是用什么方法把空字符是怎么写入文本的(虽然我也能)。真心感觉是没事找事。
从一个流 ...
谢谢……那个是我搞混了,现在我又有了新疑问,以rb+,r+打开文件,遇到0x0A都会停止 但为什么遇到0x1A就一个停止,一个不停止呢……再次谢谢你 afio0166 发表于 2018-3-31 21:52
谢谢……那个是我搞混了,现在我又有了新疑问,以rb+,r+打开文件,遇到0x0A都会停止 但为什么遇到0x1A就 ...
不懂。我不会给自己找这些麻烦事。
不过可以很清楚的说明
%d:读入一个十进制整数.
%i :读入十进制,八进制,十六进制整数,与%d类似,但是在编译时通过数据前置或后置来区分进制,如加入“0x”则是十六进制,加入“0”则为八进制。例如串“031”使用%d时会被算作31,但是使用%i时会算作25.
%u:读入一个无符号十进制整数.
%f %F %g %G : 用来输入实数,可以用小数形式或指数形式输入.
%x %X: 读入十六进制整数.
%o': 读入八进制整数.
%s : 读入一个字符串,遇空字符‘\0'结束。
%c : 读入一个字符。无法读入空值。空格可以被读入。
附加格式说明字符表修饰符说明
L/l 长度修饰符 输入"长"数据
h 长度修饰符 输入"短"数据
百度上都有。https://baike.baidu.com/item/fscanf/10942374?fr=aladdin
但是我就搞不清 这明明是一个不适用操作rb的函数,你为什么要喜欢搞怪。 更正下。仔细看了下后面的格式化,%s 是空字符也表示结束。
页:
[1]