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;

}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章