linux高级编程(标准I/O)
创始人
2024-09-26 11:25:21
0

标准io; stdio.h

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
      如果没有系统调用则显示系统库函数帮助

流:   FILE*

struct FILE
{
}
    数据从文件当中流入和流出所体现出来的字节
    流叫做流

    流的分类:
        二进制流: 2001 \n
            二进制数据的流
        文本流:
            ASCII码数据的流 \n \t 
FILE 结构定义的对象 FILE * 称之为流对象,也叫文件流指针。
流对象 ===》头 《===数据====》尾

stdin  FILE*   scanf ();
stdout         printf();
stderr


1,打开文件  FILE 
2,io操作,,读写操作
3,关闭文件  

fopen打开文件函数

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 语言中,fgetcfgetsfputc 和 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就换成几)

相关内容

热门资讯

安卓系统为什么不封闭,揭秘安卓... 你有没有想过,为什么安卓系统那么开放,却不像苹果iOS那样封闭呢?这背后可是有着不少有趣的故事和原因...
安卓系统更新包多大,解析不同版... 你有没有发现,每次安卓系统更新,手机里都会多出那么几个G的文件?这可真是让人好奇,安卓系统更新包究竟...
安卓手机安装双系统吗,安卓手机... 你有没有想过,你的安卓手机是不是也能像电脑一样,装上两个系统,一个用来工作,一个用来娱乐?没错,这就...
oppo会升级安卓系统,畅享最... 你知道吗?最近有个大消息在手机圈里炸开了锅,那就是OPPO要升级安卓系统啦!这可不是什么小打小闹的更...
安卓系统上安装windows,... 你有没有想过,在安卓手机上安装Windows系统?听起来是不是有点不可思议?但你知道吗,这竟然是可能...
安卓系统怎么进运行框,安卓系统... 你有没有想过,你的安卓手机里有一个超级实用的功能,那就是运行框!它就像是一个小助手,帮你快速找到正在...
安卓系统电视无图像设置,安卓电... 你家的安卓系统电视突然没图像了?别急,让我来给你支个招,让你轻松解决这个问题!一、检查电源和连接线首...
安卓机建议升级系统吗,提升性能 你有没有发现,你的安卓手机最近有点儿慢吞吞的?是不是在犹豫要不要升级系统呢?别急,让我来给你好好分析...
升级不了安卓系统升级,探寻升级... 你有没有遇到过这种情况?手机里的安卓系统突然告诉你,它需要升级,但你左等右等,就是升不上去。这可真是...
备用安卓系统手机推荐,盘点热门... 你有没有想过,如果你的手机突然罢工了,你会怎么办?别担心,今天我就要给你安利几款备用安卓系统手机,让...
旧安卓系统ipad无法更新系统... 你有没有遇到过这种情况?你的旧安卓系统iPad突然告诉你,它无法更新系统了!是不是瞬间感觉心里有点小...
运行安卓6系统命令大全,全面掌... 你有没有想过,你的安卓手机里隐藏着无数强大的功能,只等着你去发现和探索呢?今天,就让我带你走进安卓6...
安卓系统简笔画教程下载,轻松绘... 你有没有想过,用简单的线条就能把复杂的安卓系统画出来?没错,就是那种一看就懂,一画就上手的感觉!今天...
华为如何鸿蒙转安卓系统,轻松实... 你知道吗?最近华为的大动作可是让整个科技圈都沸腾了!他们竟然把鸿蒙系统转到了安卓系统上,这可真是让人...
安卓10系统的问题,安卓10系... 你有没有发现,自从你的手机升级到安卓10系统后,好像有点不对劲呢?别急,让我来给你细细道来,看看安卓...
安卓系统苹果搞笑视频,苹果搞笑... 你知道吗?在互联网的世界里,搞笑视频可是个永恒的热门话题。尤其是那些结合了安卓系统和苹果手机的搞笑片...
卡片机改造安卓系统,探索改造之... 你有没有想过,那些曾经陪伴我们记录美好时光的卡片机,现在竟然也能焕发第二春呢?没错,就是那些小巧便携...
装安卓系统倒车出不来,智能科技... 你有没有遇到过这样的事情:手机装了个安卓系统,结果倒车的时候出不来啦?这可不是闹着玩的,简直让人抓狂...
定制安卓系统哪家好点儿,哪家服... 你有没有想过,手机系统就像是个人的衣服,每个人都需要找到最适合自己的那一款?今天,咱们就来聊聊定制安...
台电用回安卓系统吗,开启智能新... 最近有个话题在科技圈里炒得挺热的,那就是台电是不是要用回安卓系统了?你有没有想过,这个小小的决定背后...