fwrite和fscanf的区别
时间: 2024-01-03 19:21:23 浏览: 80
fwrite和fscanf都是C语言中用于文件读写的函数,它们的区别在于:
1. fwrite是将数据以二进制的形式直接写入文件,不经过转换,而fscanf是将文件中的数据按照指定格式读取后再进行转换。
2. fwrite的函数原型为size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream),其中ptr为要写入的数据的指针,size为每个数据块的大小,count为数据块的个数,stream为文件指针。返回值为成功写入的数据块个数。而fscanf的函数原型为int fscanf(FILE* stream,const char* format,[argument...]),用法类似于scanf函数,返回值为成功读入参数的个数,当读到文件末尾EOF时,返回-1。
3. fwrite适用于写入二进制文件,而fscanf适用于读取文本文件。
下面是一个fwrite的例子:
```c
#include <stdio.h>
#include <string.h>
int main () {
FILE *fp;
char str[] = "This is a test";
fp = fopen("test.txt", "wb");
fwrite(str, 1, strlen(str), fp);
fclose(fp);
return 0;
}
```
上述代码将字符串"This is a test"以二进制形式写入文件test.txt中。
下面是一个fscanf的例子:
```c
#include <stdio.h>
int main () {
FILE *fp;
char str[100];
fp = fopen("test.txt", "r");
fscanf(fp, "%s", str);
printf("Read String |%s|", str );
fclose(fp);
return 0;
}
```
上述代码从文件test.txt中读取一个字符串并输出。
阅读全文