Linux 文件14-16 (标准c库对文件操作,fopen、fwrite、fread、fseek...)

19 篇文章 0 订阅
code:demo17.c(fopen、fwrite、fread、fseek)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//      FILE *fopen(const char *path, const char *mode);
//      size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);
					//const void *ptr这里表示什么数据类型都可以
//      size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
int main()
{
        FILE *fd;
        char *str="how learn to LiunxFile programme";
        char *readBuf;
        readBuf=(char *)malloc(strlen(str));
        fd=fopen("./fopen.txt","w+");
        fwrite(str,sizeof(char),strlen(str),fd);//写入char个字节*写strlen(str)次,写入大小=sizeof(char)*strlen(str)
        fseek(fd,0,SEEK_SET);
        fread(readBuf,sizeof(char),strlen(str),fd);
        printf("read data is what:%s\n",readBuf);

        fclose(fd);
        return 0;
}
code:demo18.c(读写的返回值)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
        FILE *fd;
        char *str="how lrean to LiunxFile programme";
        char *readBuf;
        readBuf=(char *)malloc(strlen(str));
        fd=fopen("./fopen.txt","w+");
        int n_write = fwrite(str,sizeof(char)*strlen(str),1,fd);//n_write大小与nmemb相关(第三个参数)
        fseek(fd,0,SEEK_SET);
        int n_read = fread(readBuf,sizeof(char)*strlen(str),1,fd);//n_read大小与nmemb相关(第三个参数,如果nmemb给多了按照写入nmemb大小的计算)

        printf("read data is what:%s\n",readBuf);
        printf("n_write:%d,n_read:%d\n",n_write,n_read);
        fclose(fd);
        return 0;
}

运行结果:

CLC@Embed_Learn:~/LinuxLearn/FILE$ ./a.out
read data is what:how lrean to LiunxFile programme
n_write:1,n_read:1

code:demo19.c( 参数size_t size、 size_t nmemb与demo18.c的区别)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main()
{
        FILE *fd;
        char *str="how lrean to LiunxFile programme";
        char *readBuf;
        readBuf=(char *)malloc(strlen(str));
        fd=fopen("./fopen.txt","w+");
        int n_write = fwrite(str,sizeof(char)*strlen(str),1,fd);

        fseek(fd,0,SEEK_SET);
        int n_read = fread(readBuf,sizeof(char),100,fd);

        printf("read data is what:%s\n",readBuf);
        printf("n_write:%d,n_read:%d\n",n_write,n_read);
        fclose(fd);
        return 0;
}

运行结果:

CLC@Embed_Learn:~/LinuxLearn/FILE$ ./a.out
read data is what:how lrean to LiunxFile programme
n_write:1,n_read:32

code:demo20.c(写入读取结构体)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

struct Test
{
        int a;
        char c;
};

int main()
{
        FILE *fp;
        struct Test data1={97,'a'};
        struct Test data2;
        fp=fopen("./file","w+");//in "w+"not can have "kongge " 
        int wrByt=fwrite(&data1,sizeof(struct Test),1,fp);
        fseek(fp,0,SEEK_SET);
        int rdByt=fread(&data2,sizeof(struct Test),1,fp);
        printf("read data2:%d,%c\n",data2.a,data2.c);
        fclose(fp);
        return 0;
}

运行结果:

CLC@Embed_Learn:~/LinuxLearn/FILE$ ./a.out
read data2:97,a

code:demo22.c(fputc)
#include <stdio.h>
#include <string.h>
//      int fputc(int c, FILE *stream);
//      int fputs(const char *s, FILE *stream);
int main()
{
        FILE *fp;
        int i;
        char *str ="Liunx file lrean , come on";
        int len = strlen(str);
        fp=fopen("./file.txt","w+");
        for(i=0;i<len;i++){
                fputc(*str,fp);//每次写一个字符,直到结束
                str++;
        }
        fclose(fp);
        return 0;
}

运行结果:

CLC@Embed_Learn:~/LinuxLearn/FILE$ ./a.out
CLC@Embed_Learn:~/LinuxLearn/FILE$ cat file.txt
Liunx file lrean , come on

code:demo23.c(feof、fgetc)
CLC@Embed_Learn:~/LinuxLearn/FILE$ cat file.txt 
Liunx file lrean , come onCLC@Embed_Learn:~/LinuxLearn/FILE$ vi file.txt 
CLC@Embed_Learn:~/LinuxLearn/FILE$ cat demo23.c
#include <stdio.h>
#include <stdlib.h>
int main()
{
	FILE *fp;
	char c;

	fp=fopen("./file.txt","r");
	if(fp == NULL){
		printf("Not find file : file.txt\n");
		exit(-1);
	}	
	while(!feof(fp))//feof没有到达文件末尾时返回值为0,到达末尾返回值为非0
	{
		//int fgetc(FILE *stream);	
		c=fgetc(fp);//fgetc每次读取一个字符并移动一个光标
		printf("%c",c);
	}	
	return 0;
}

运行结果:

CLC@Embed_Learn:~/LinuxLearn/FILE$ ./a.out
Liunx file lrean , come on

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值