1,标准io的概念 1975 Dennis r IO库,C语言的标准,ANSI c 
      一般都是对普通文件操作是一种有缓存的IO 在文件IO和用户程序之间,加入缓冲区,可以有效减少系统调用的效率,节省系统IO调度资源
 2,文件的概念,作用
     linux中一切都是文件。文件用来存储数据(数据,指令);
 3,linux中文件的类型,
     7种,d ,-,l,p管道,s, ,c,b 用命令演示  link pip socket
     hello  oellh,,512 
 io的分类
     标准io,
     stdio.h
     Dennis Ritchie
     标准IO:
     ANSI C 设计的一组用文件IO 封装的操作库函数
     头文件: stdio.h  ==》标准输入输出头文件
              /usr/include/stdio.h
             <>   是系统库函数,默认路径在/usr/include/
             eg : ====》stdio.h  ===>stdio.c==>libc.so ==>/usr/lib  so 动态库 user resource 
             ""   是用户自定义函数,默认是当前路径
             eg : ===>xxx.h  ===>xxx.c
             
       man  man  ==>所有man的帮助 
       man  xxx == man 1 xxx ===>查看当前xxx命令
       man 2 xxx  ===>查看xxx对应的系统调用函数
       man 3 xxx  ===》查看xxx对应的标准库函数
    :如果没有命令则直接man xxx 会显示其函数\n
       如果没有系统调用则显示系统库函数帮助
struct FILE
 {
 }
     数据从文件当中流入和流出所体现出来的字节
     流叫做流
    流的分类:
         二进制流: 2001 \n
             二进制数据的流
         文本流:
             ASCII码数据的流 \n \t 
 FILE 结构定义的对象 FILE * 称之为流对象,也叫文件流指针。
 流对象 ===》头 《===数据====》尾
stdin  FILE*   scanf ();
 stdout         printf();
 stderr
1,打开文件  FILE 
 2,io操作,,读写操作
 3,关闭文件  
1, fopen,
2, 读写操作相关, 
     fgetc/fputc,,,,,,一个字符,
     fgetc(int c ,FILE*strem);
     fgets/fputs....,,一次一行。。。
     fread/fwrite....自定义大小,,二进制
    struct person
     {
         char name[10];
         int age;
         char phone[15];
     };
     person son[10]; 
 3,fclose..
C 语言中,fgetc、fgets、fputc 和 fputs 函数用于文件的字符和字符串输入输出。下面是对这些函数的详细对比:
fgetc 和 fgets 对比fgetc 函数fgetc 用于从文件中读取一个字符。其函数原型如下:
int fgetc(FILE *stream);  参数:
stream:文件流指针,指向一个已经打开的文件。返回值:
int 型表示)。EOF。EOF。使用示例:
#include   int main() {     FILE *file = fopen("example.txt", "r");     if (file == NULL) {         perror("fopen");         return 1;     }      int ch;     while ((ch = fgetc(file)) != EOF) {         putchar(ch);  // 打印字符到标准输出     }      fclose(file);     return 0; }   fgets 函数fgets 用于从文件中读取一行文本。其函数原型如下:
char *fgets(char *str, int n, FILE *stream);  参数:
str:指向字符数组的指针,用于存储读取的字符串。n:要读取的最大字符数(包括结尾的空字符 \0)。stream:文件流指针,指向一个已经打开的文件。返回值:
str。NULL。使用示例:
#include   int main() {     FILE *file = fopen("example.txt", "r");     if (file == NULL) {         perror("fopen");         return 1;     }      char buffer[256];     while (fgets(buffer, sizeof(buffer), file) != NULL) {         printf("%s", buffer);  // 打印读取的行     }      fclose(file);     return 0; }   fputc 和 fputs 对比fputc 函数fputc 用于将一个字符写入文件。其函数原型如下:
int fputc(int c, FILE *stream);  参数:
c:要写入的字符(以 int 型表示)。stream:文件流指针,指向一个已经打开的文件。返回值:
EOF。使用示例:
#include   int main() {     FILE *file = fopen("example.txt", "w");     if (file == NULL) {         perror("fopen");         return 1;     }      fputc('A', file);  // 写入单个字符     fputc('\n', file); // 写入换行符      fclose(file);     return 0; }   fputs 函数fputs 用于将一个字符串写入文件。其函数原型如下:
int fputs(const char *str, FILE *stream);  参数:
str:要写入的字符串。stream:文件流指针,指向一个已经打开的文件。返回值:
EOF。使用示例:
#include   int main() {     FILE *file = fopen("example.txt", "w");     if (file == NULL) {         perror("fopen");         return 1;     }      fputs("Hello, World!\n", file);  // 写入字符串     fputs("This is a new line.\n", file);      fclose(file);     return 0; }   fgetc 逐字符读取文件,适合处理字符流或逐字符分析。fgets 逐行读取文件,适合处理文本行或读取固定长度的字符串。fputc 逐字符写入文件,适合写入单个字符或生成字符流。fputs 逐字符串写入文件,适合写入文本行或生成字符串。这些函数各有其适用的场景,选择合适的函数可以使文件操作更加高效和简便。
fgets fputs  遇到0a(\n)、00('\0'),就停止读和写。


-t改成 -c 以符号呈现


用户,组内用户,其他人

硬链接:多个文件名关联一个文件内容(几个文件则上面的1就换成几)