zoukankan      html  css  js  c++  java
  • AnsiIO

    1.文件数据内容,元数据内容
    i节点
    ls -l err.txt
    -rw-rw-r-- 1 csgec csgec 50 Jun 23 11:19 err.txt
    -:普通文件(文件类型)
    rw-:属主用户拥有可读可写的权限
    1:表示硬链接数(链接有软链接和硬连接)
    ln

    csgec:用户名 组名
    50:文件大小
    Jun 23 11:19:创建时间
    err.txt:文件名

    2.内核(kenerl)空间(内核态)与用户空间(用户态)
    3.文件描述符
    在Linux中,用文件描述符代表一个打开的文件,其本质是一个非负的整数。
    4.系统调用(system call)
    因为用户空间的程序是不能直接访问内核,而很多功能必须由内核提供,因此,必须有一种方式能够进入内核空间。Linux系统定义了一系列函数用于进入内核空间完成功能。这一系列函数统称为系统调用。

    系统调用可以被程序员直接调用,也可以被标C函数调用,还可以被系统命令调用。


    程序运行起来之后称为进程

    PCB
    vim /usr/src/linux-headers-3.13.0-24/include/linux/sched.h
    task_struct描述进程
    files_struct *
    cat /proc/sys/fs/file-max


    标准IO:
    1.文件操作的基本步骤
    1.打开文件
    所谓打开文件,就是建立用户程序与文件的联系,为文件开辟缓冲区
    ,使文件指针指向该文件,以便进行其它各种操作。
    fopen();
    2.操作文件
    3.关闭文件
    fclose();
    关闭文件就是切断文件与程序的联系,将文件缓冲区中的内容写入磁盘,并释放文件缓冲区,禁止再对该文件进行操作。
    2.打开文件
    FILE *fopen("带路径的文件名","文件使用方式");
    3.关闭文件
    fclose(fp);

    4.读
    1.读一个字符
    fgetc(fp)
    getc(fp)
    getchar(void)
    2.读一行
    fgets()
    gets()
    3.任意读(数据块读)
    fread()
    5.写
    1.写一个字符
    fputc(int,fp);
    putc(int,fp);
    putchar(int);
    2.写一行
    fputs(ptr,fp);
    puts(pts);
    3.任意写
    fwrite();

    6.格式化的读写
    int printf(const char *format, ...);
    int fprintf(FILE *stream, const char *format, ...);
    int sprintf(char *str, const char *format, ...);
    //str.sprintf();
    int snprintf(char *str, size_t size, const char *format, ...);

    int scanf(const char *format, ...);
    int fscanf(FILE *stream, const char *format, ...);
    int sscanf(const char *str, const char *format, ...);

    7.刷新流
    fflush(fp);

    8.定位流
    fseek(fp,offset,基准值)
    SEEK_SET 文件开头
    SEEK_CUR 当前位置
    SEEK_END 文件末尾

    fseek(fp,-10,SEEK_SET);//
    fseek(fp,100,SEEK_END);//

    ftell()

    rewind()

    9.文件流出错、结束

    void clearerr(FILE *stream);

    int feof(FILE *stream);

    int ferror(FILE *stream);

    int fileno(FILE *stream);

    测行缓冲区的大小:

    204*5 + 4 = 1024
    stdin
    stdout 行缓冲

    stderr

    用文件实现用户注册和登录,修改密码
    struct user
    {
    char name[20];
    int pwd;
    };

    /*************************************************************************
    > File Name: fwrite.c
    > Author: csgec
    > Mail: longer.zhou@gmail.com
    > Created Time: Mon 01 Aug 2016 02:41:50 PM CST
    ************************************************************************/

    #include<stdio.h>
    #include<string.h>
    struct student
    {
    int num;
    char name[24];
    int age;

    };


    int main()
    {
    struct student s;
    s.num = 1001;
    strcpy(s.name,"zhangfei");
    s.age = 20;

    //1.open file
    FILE *fp = fopen("a.txt","w");
    if(fp == NULL)
    {
    perror("fopen");
    return -1;
    }
    //2.
    fwrite(&s,sizeof(s),1,fp);

    //3.
    fclose(fp);

    }

    /*************************************************************************
    > File Name: test.c
    > Author: csgec
    > Mail: longer.zhou@gmail.com
    > Created Time: Mon 01 Aug 2016 04:56:29 PM CST
    ************************************************************************/

    #include<stdio.h>


    int main()
    {
    int i;
    for(i = 10000; i < 10300; i++)
    {
    fprintf(stdout,"%d",i);
    }
    pause();
    }

  • 相关阅读:
    数据库事务查看
    在SQL中删除重复记录(多种方法)
    OO设计原则
    NHibernate开源框架Cuyahoga学习之权限映射
    链队列的实现
    二叉树的实现
    NHibernate.cfg.xml文件配置
    HQL查询实例
    对象枚举遍历实现二
    NHibernate开源框架Cuyahoga学习之数据访问泛型约束的实现
  • 原文地址:https://www.cnblogs.com/liudehao/p/5754013.html
Copyright © 2011-2022 走看看