open fdopen fread fwrite使用方法

#include <stdio.h>

#include <stdlib.h>

#include <fcntl.h>

#include <string.h>

int main(int argc, char **argv){

    FILE* fp = NULL;

    int fd;

    FILE* fp1 = NULL;

    char write_buf[] = "HELLO WORLD!";

    char read_buf[16];

    int n;

    /*

    fp = freopen("test", "w", stdout);

    if (fp == NULL) {

        printf("error fp = %p\n", fp);

    }else{

        printf(" fp = %p\n", fp);

        fputs("helloworld!!!", fp);

        fclose(fp);

    }

    */

    fd = open("test1", O_RDWR | O_TRUNC | O_CREAT, S_IRUSR |S_IWUSR);

    if (fd == -1) {

        printf("open test1 error!\n");

        exit(1);

    }

    

    fp1 = fdopen(fd, "w+");//将文件与流关联

    if (fp1 == NULL) {

        printf("fdopen test1 error!\n");

        exit(1);

    }

    n = fwrite(write_buf, 1, strlen(write_buf), fp1);

    printf("write n = %d %ld %ld\n", n, sizeof(write_buf), strlen(write_buf));

    fseek(fp1, strlen("HELLO "), SEEK_SET);

    n = fread(read_buf, 1, sizeof(read_buf), fp1);

    if (feof(fp1)) {

        printf("end of file!\n");

    }

    printf("n =%d read_buf = %s\n", n, read_buf);

    

    rewind(fp1);

    n = fread(read_buf, 1, sizeof(read_buf), fp1);

    printf("n =%d read_buf = %s\n", n, read_buf);

    if (n > 0) {

        read_buf[n] = '\0';

    }

    fclose(fp1);

    

    return 0;

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值