7.26学习日志 ——文件I/O操作

文件I/O操作
POSIX库函数 :(protable operating system interface 可以移植操作系统接口)
open() read() write() lseek() close()
这些函数只能在Linux下使用,程序不可移植,这些函数主要是用来系统调用的,比较低级。
返回值:是一个文件描述符

C标准库函数:
fopen() fread() fwrite() fseek() fprintf() fclose() ftell()
通过上面的open() read() write() lseek() close()等一些低级函数封装过来的
返回值:是一个FILE结构指针
这里用到了I/O数据流的操作。


这里还涉及到缓冲区和非缓冲区的问题,还没研究。
标准C函数库和POSIX函数库的关系:
https://blog.csdn.net/smstong/article/details/51614857
https://blog.csdn.net/dreamtdp/article/details/7560654

一个读写文件的程序

#include <sys/stat.h>
#include <fcntl.h>
#include "tlpi_hdr.h"


struct ADDRESS
{
    char name[15];
    char unit[15];
    char phone[15];
};

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

    
    int n,i;
    struct ADDRESS add[50];
    
    if(strcmp(argv[1],"input") == 0)
    {
        FILE * fp;
        printf("please input record num you want to input \n");
        scanf("%d",&n);
        for(i = 0; i < n; i++)
        {
            printf("input a name a unit a phonenum\n");
            scanf("%s%s%s",add[i].name, add[i].unit, add[i].phone);
        }
        fp = fopen("./tfile","a");
        for(i = 0; i < n; i++)
        {
            fprintf(fp, "%s%10s%10s \n",add[i].name , add[i].unit , add[i].phone);
        }
        fclose(fp);
    }
    
    if(strcmp(argv[1],"show") == 0)
    {

        FILE * fp;
        int len;
        char buffer[100];
        
        fp = fopen("./tfile","r");
        printf("show address list \n");
        fseek(fp , 0L , SEEK_END);
        len = ftell(fp);
        rewind(fp);
        fread(buffer , 1 , len ,fp);
        printf("%s",buffer);
        fclose(fp);

    }
    return 0;
 

------------------------------------------------------------------------------------------------------------------------
数据结构的使用
结构体在内存中的存储
struct A
{
    char a[20];
    char b[20];
    char c[20];
}; //注意分号结尾
struct A a[10] = {{"aaa","aaa","aaa"},{"bbb","bbb","bbb"},{"ccc","ccc","ccc"}}

sizeof(struct A)  60
sizeof(a) 600
sizeof(a[0]) 60

猜你喜欢

转载自blog.csdn.net/sinat_39440759/article/details/81227501
今日推荐