C语言中输入输出流与的文件IO操作

文章目录

  • 一、输入输出流是什么?
  • 二、C语言中常用的输入输出流
    • 1.gerchar()与putchar()
    • 2.gets()与puts()
    • 3.scanf与print()
  • 三、文件的创建/打开与关闭
  • 四、文件IO操作
    • 1.fputc与fgetc
    • 2.fputs与fgets
    • 3.fscanf与fprintf
    • 4.fwrite与fread

一、输入输出流是什么?

1.输入流:

输入流就是数据从数据源(文件,键盘)中到c程序的内存中的传输路径。

2.输出流:

输出流就是数据从c程序的内存中到数据源(文件,显示屏)的传输路径。

图示:

二、C语言中常用的输入输出流

1.gerchar()与putchar()

 1.getchar

  函数:int getchar(ASCII值或者单个字符);

  功能:从键盘输入单个字符或字符的ASCII码值,将该值以整数的形式返回。

  2.putchar函数

  函数原型:int putchar(ASCII值或字符);

  功能:将你传入的ASCII值或字符输出

  返回一个整数值

#include<stdio.h>

int main(){

    printf("请你输入一个字符\n");

    int n = getchar();

    printf("%d,%c\n", n, n);

    printf("=======================\n");

    int c1 = putchar('c');

    printf("\n");

    int c2 = putchar(100);

    printf("\n");

    printf("%c,%d\n",c1,c2);

}

运行结果:

2.gets()与puts()

1.gets函数:

函数原型:char *gets(char *buf)

功能:从键盘输入字符串将字符串输入字符数组buf中返回一个指向buf的指针

2.puts函数

函数原型:int puts(char *buf);

功能:将buf中的内容输出出来会自动换行,返回一个非负整数,失败返回EOF

#include<stdio.h>

int main(){

    printf("请你输入一个字符串\n");

    char buf[100];

    char *p = gets(buf);

    int m = puts(buf);//输出buf内容

    puts(p);//输出p指针指向的内容

    printf("%d\n",m);

}

运行结果:

3.scanf与print()

C 语言中的 I/O (输入 / 输出)通常使用 printf() scanf() 两个函数, scanf() 函数从标准输入流 stdin 读取输
入, printf() 函数把输出写入到标准输出流 stdout 。这两个函数我们在前面的案例中已经大量使用。

三、文件的创建/打开与关闭

1.fopen函数

fopen()函数:功能打开或创建文件

函数原型:FILE *fopen(FILE*fileName,const char*mode);

参数FILE*fileName:文件名

参数const char*mode:文件的打开方式

文件的打开方式 r(只读方式打开文件)

w(只写的方式打开文件,从头写入,若文件不存在就先创建在写入,若文件存在就先清空在入)。

a(以追加的方式打开文件,文件存在就追加内容写入,不存在就先创建再写入,a只有写入权限)。

r+(以可读写的方式打开文件)

w+(以可读写的方式打开文件,其余的功能与w相同)

a+(以追加的方式打开文件,具有读写权限,其余功能与a相同)

rb(以只读的方式打开二进制文件)

wb(以只写的方式打开二进制文件,其余功能与w相同)

ab(已追加的方式打开二进制文件,其余功能与a相同)

rb+(以读写的方式打开二进制文件)

wb+(以读写的方式打开二进制文件,其余功能与w+相同)

ab+(已追加的方式打开二进制文件,其余功能与a+相同)

返回值:FILE类型的指针,就代表你打开或创建的文件。

2.fclose函数

fclose()函数:功能关闭并释放文件

int fclose(FILE*fileName);

参数:文件名

返回值成功返回0或一个整数,失败返回EOF

#include<stdio.h>

int main(){

    FILE *file = fopen("./fopen.txt","w+");

    if(file == NULL){

        perror("文件打开或操作失败\n");

        return 0;

    }

    printf("文件打开或创建成功\n");

    fclose(file);

}

运行结果:

四、文件IO操作

注意:所有的文件操作都需要先打开文件然后才能进行文件IO操作

1.fputc与fgetc

1.fputc:功能将一个字符读入文件中

int fputc(int character,FILE*stream);

FILE*stream:要写入的文件

int character:要写入的字符或字符的ASCII

返回值:character

2.fgetc:功能将文件中字符一个一个的读取

int fgetc(FILE*stream);

FILE*stream:要写入的文件

返回值:读取字符或其ASCII码值

代码:使用fputc向a.txt文件中写入单个字符

#include<stdio.h>

int main(){

    FILE *file = fopen("./a.txt","r+");

    int a = fputc('a',file);

    printf("%c\n",a);

    close(file);

}

运行结果:

a.txt文件

 代码案例:从a.txt文件中获取单个字符

#include<stdio.h>

int main(){

    FILE *file = fopen("./a.txt","r+");

    int b = fgetc(file);

    printf("%c\n",b);

    fclose(file);

}

运行结果:

2.fputs与fgets

1.fputs:功能向文件中写入字符串

int fputs(const char * buf,FILE *stream)

const char * buf:将要写入的字符串

FIlE *stream:写入的文件

返回值:成功返回一个非负数,失败返回EOF

2.fgets:功能将文件中读取内容指定字符串中

char *fgets(char * buf,int number,FILE *stream);

char *buf:装载读取内容的字符数组

int number:读取字符的个数,个数为有效字符个数加上'\0'

FILE *stream:被读取的文件

返回值:指向buf的指针

代码案例:使用fputs函数向a.txt文件中写入buf字符串的内容

#include<stdio.h>

#include<string.h>

int main(){

    FILE *file = fopen("./a.txt","r+");

    char buf[] = "apple";

    int n = fputs(buf,file);

    printf("n=%d\n",n);

}

运行结果:

a.txt文件:

代码案例:从问价a.txt中读取数据到buf2中并打印出来

#include<stdio.h>

#include<string.h>

int main(){

    FILE *file = fopen("./a.txt","r+");

    char buf2[100];

    char * s = fgets(buf2,10,file);

    printf("s=%s,buf2=%s\n",s,buf2);

}

运行结果:

3.fscanf与fprintf

1.fprintf():向文件中以printf方式写入数据

int fprintf(FILE *file,const char *format,....)

FILE *file:要写入的文件

const char *format与....:写入的格式,与你使用printf输出的格式一样

你可以在第二个参数里加上输出格式控制符,%d,%f...,再在最后一个参数中

写入对应的变量与数值。

返回值:与printf返回值一样,返回你功能写入字符的个数

失败返回EOF

1.fscanf():以scanf的方式在文件中读取数据使用空白字符(空格、制表符、换行符等)分隔

内容赋值给不同的变量

int fscanf(FILE *file,const char *format,......);

FILE *file:要读取的文件

char *format与......:写入的格式,与你使用scanf输出的格式一样

你可以在第二个参数里加上输出格式控制符,%d,%f...,再在最后一个参数中

写入对应的变量与数值。

返回值:与scanf返回值一样,返回你功能读取文件的格式控制符的个数

失败返回EOF

代码案例:使用fprintf向文件a.txt中输入数据

#include<stdio.h>

int main(){

    FILE *file = fopen("./a.txt","r+");

    int n = fprintf(file,"aaa%d",10);

    printf("n=%d\n",n);

}

运行结果:

a.txt文件:

代码案例:使用fscanf函数将a.txt文件中的内容读取出来

#include<stdio.h>

int main(){

    char s1[100];

    int num;

    int m = fscanf(file,"%s%d",s1,&num);

    printf("m=%d,s1=%s,num=%d\n",m,s1,num);

}

运行结果:

4.fwrite与fread

1.fwrite():功能:将字符数组中的内容写入文件中

size_t fwrite(char *buf,size_t size,size_t numher,FILE *stream);

char *buf,写入文件的字符数组

size_t size,单个数据项的大小

size_t numher 数据项的个数

FILE *stream 要写入的文件

返回值 写入文件的数据项的个数

2.fread():功能:将文件中的内容写入字符数组中

size_t fread(char *buf,size_t size,size_t numher,FILE *stream);

char *buf,接受文件内容的字符数组

size_t size,单个数据项的大小

size_t numher 数据项的个数

FILE *stream 被读取的文件

返回值 读取文件数据项的个数

代码案例:使用fwrite函数将字符数组中的内容写入数据中

#include<stdio.h>

#include<string.h>

int main(){

    FILE *file = fopen("./a.txt","r+");

    char buf[] = "aaaabbbbssss";

    int n = fwrite(buf,strlen(buf),1,file);

    printf("n=%d\n",n);

}

运行结果:

a.txt文件:

案例代码:使用fread将a.txt文件中的中全部的内容读取到字符数组中打印出来

#include<string.h>

int main(){

    FILE *file = fopen("./a.txt","r+");

    char buf2[100];

    fread(buf2,12,1,file);

    printf("%s\n",buf2);

}

运行结果:

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值