Linux标准IO的输入输出

目录

标准IO的输入和输出

1.按字符输入

2.按字符输出

3.按行输入

4.按行输出

5.按指定对象输入输出


标准IO的输入和输出

1.按字符输入

#include <stdio.h>
int fgetc(FILE *stream);//函数
int getc(FILE *stream); //宏
int getchar(void);      //只能读取键盘输入

打开文件后读取,是从文件开头开始读的,读完一个后读写指针会后移(即一个一个读)

 #include <stdio.h>
 
   int main(){
   FILE *fp;//打开文件
   int rec;
   fp = fopen("1.txt", "r");
   if(fp==NULL){
       perror("fopen");
       return 0;
    }
 
    rec = fgetc(fp);//读取字符
    printf("Get char = %c\n",rec);
    rec = fgetc(fp);//读取字符
    printf("Get char = %c\n",rec);
    rec = fgetc(fp);//读取字符
    printf("Get char = %c\n",rec);

    return 0;
}
​

调用getchar会堵塞,等待从键盘输入字符

#include <stdio.h>

int main(){
    FILE *fp;//打开文件
    int rec;
    fp = fopen("1.txt", "r");
    if(fp==NULL){
        perror("fopen");
        return 0;
    }
    rec = fgetc(fp);
    printf("Get char=%c\n",rec);

    rec = getchar();
    printf("Get STD input=%c",rec);


    return 0;
}
​

2.按字符输出

#include <stdio.h>
int fputc(int c, FILE *stream);
int putc(int c, FILE *stream);
int putchar(int c);

3.按行输入

#include<stdio.h>
char *gets(char *s);//只能从键盘读取(已经淘汰)
char *fgets(char *s,int size,FILE *stream);
  • 成功时返回s,到文件末尾或出错时返回NULL

  • gets不推荐使用,容易造成缓冲区溢出(没有指定输入size,不要使用)

  • 遇到'\n'或已输入size-1字符时返回,总是包含'\0'

  • fgets函数第三个参数可以是文件,也可以从键盘输入(stdin是标准IO的文件指针,指向键盘)

注意事项:

gets函数已被淘汰,不要使用。

fgets函数第二个参数注意大小

4.按行输出

#include<stdio.h>
int puts(const char*s);
int fputs(const char*s,FILE*stream);
  • 成功时返回非负整数;出错时返回EOF

  • puts将缓冲区s中的字符串输出到stdout,并追加'\n'

  • fputs将缓冲区s中的字符串输出到stream,不追加'\n'

  • fputs函数第三个参数可以是文件,也可以是输出到屏幕(stdout是标准IO的文件指针,指向屏幕)

5.按指定对象输入输出

#include <stdio.h>
size_t fread(void *ptr,size_t size, size_t n, FILE *fp);
size_t fwrite(const void *ptr,size_t size, size_t n, FILE *fp);

void *ptr 读取(写)内容放的位置指针

size_t size 读取(写)的块大小

size_t n 读取(写)的个数

FILE *fp 读取(写)的文件指针

  • 成功时返回读写对象个数;出错时返回EOF

  • 既可以读写文本文件,也可读写数据文件(二进制文件)

  • 效率高

注意事项:

文件写好后,文件指针指向文件末尾,这时候读不出来内容

解决办法:移动指针;关闭文件,重新打开

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值