本帖最后由 yep96 于 2023-8-20 14:11 编辑
按我的理解你的2.dat就是一个文本文件吧?那应该用fscanf指定为int读取
[C] 纯文本查看 复制代码 #include <stdio.h>
int main() {
FILE* fp = fopen("D:/2.dat", "r");
int num;
fscanf(fp, "%d", &num);
printf("The number is: %d\n", num);
fclose(fp);
return 0;
}
fread 和 fscanf 都是 C 语言标准库中用于文件操作的函数,但它们有不同的用途和特点:
-
fread:
fread 函数是用来从文件中按照指定的字节数读取数据的。
- 它的函数原型是:
size_t fread(void *ptr, size_t size, size_t count, FILE *stream); 。
- 参数说明:
ptr :指向要读取数据存储位置的指针。
size :要读取的每个数据项的字节数。
count :要读取的数据项的数量。
stream :要读取的文件指针。
fread 返回实际读取的数据项数量,如果返回值与 count 不相等,可能意味着已经读取到文件末尾或出现了错误。
-
fscanf:
fscanf 函数用于按照格式化字符串从文件中读取数据。它可以根据指定的格式将数据解析成不同的类型,例如整数、浮点数、字符串等。
- 它的函数原型是:
int fscanf(FILE *stream, const char *format, ...); 。
- 参数说明:
stream :要读取的文件指针。
format :格式化字符串,指定了要读取的数据的格式。
... :可变数量的参数,用于接收解析后的数据。
fscanf 返回成功读取的数据项数量,如果返回值与预期的参数数量不匹配,可能意味着解析错误或已经读取到文件末尾。
主要区别:
fread 是按字节数读取,不关心数据的具体类型。适用于以二进制格式存储的数据。
fscanf 则是按照格式化字符串解析不同类型的数据,适用于人可读的文本文件。
你需要根据具体情况来选择使用哪个函数,通常在处理文本数据时使用 fscanf ,而在处理二进制数据时使用 fread 。
|