先来看看这个:
#include<stdio.h>
#include<string.h>
int main()
{
FILE *fp;
char readBuf[128]={
0};
char *buf="nice move!";
fp=fopen("./qin.txt","w+");
int n_write=fwrite(buf,sizeof(char),strlen(buf),fp);
fseek(fp,0,SEEK_SET);
int n_read=fread(readBuf,sizeof(char),strlen(buf),fp);
printf("%s\n",readBuf);
printf("%d %d\n",n_write,n_read);
return 0;
}
这里当然无可厚非,然后我们保持read不变,改变write后面的值
#include<stdio.h>
#include<string.h>
int main()
{
FILE *fp;
char readBuf[128]={
0};
char *buf="nice move!";
fp=fopen("./qin.txt","w+");
int n_write=fwrite(buf,sizeof(char),100,fp);
fseek(fp,0,SEEK_SET);
int n_read=fread(readBuf,sizeof(char),strlen(buf),fp);
printf("%s\n",readBuf);
printf("%d %d\n",n_write,n_read);
return 0;
}
~
结果为:
可见,fwrite的返回值是由后面的大小值决定的,然后我们再来看看fread函数
#include<stdio.h>
#include<string.h>
int main()
{
FILE *fp;
char readBuf[128]={
0};
char *buf="nice move!";
fp=fopen("./qin.txt","w+");
int n_write=fwrite(buf,sizeof(char),strlen(buf),fp);
fseek(fp,0,SEEK_SET);
int n_read=fread(readBuf,sizeof(char),100,fp);
printf("%s\n",readBuf);
printf("%d %d\n",n_write,n_read);
结果;
再来
#include<stdio.h>
#include<string.h>
int main()
{
FILE *fp;
char readBuf[128]={
0};
char *buf="nice move!";
fp=fopen("./qin.txt","w+");
int n_write=fwrite(buf,sizeof(char),strlen(buf),fp);
fseek(fp,0,SEEK_SET);
int n_read=fread(readBuf,sizeof(char),520,fp);
printf("%s\n",readBuf);
printf("%d %d\n",n_write,n_read);
return 0;
}
~
结果;
没有变化,可见,fread函数的返回值不是由后面的大小是决定的哦