fopen\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),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函数的返回值不是由后面的大小是决定的哦

猜你喜欢

转载自blog.csdn.net/qq_43482790/article/details/115110395