C语言的文件操作

目录

基本介绍

 标准文件

输入&输出函数

getchar()&putchar()函数

getchar()函数和putchar()函数的练习

 gets()&puts()函数

gets()&puts()函数的练习

 scanf()&printf()函数

输入一个文本并按下回车键时,程序读取输入,但是要求格式要匹配

C文件读写

打开文件

使用fopen()函数来创建一个新的文件或者打开一个已有的文件

 关闭文件

使用fclose()函数

C语言写入文件

写入文件的函数

写入文件的练习

控制台输出

 文件内容

 注意事项:

C语言读取文件

读取文件的函数

读取文件的练习

基本介绍

  • 文件在程序中是以流的形式来操作的

流:数据在数据源(文件)和程序(内存)之间经历的路径

输入流:数据从数据源(文件)到程序(内存)的路径               【读文件】

输出流:数据从程序(内存)到数据源(文件)的路径                【写文件】

 标准文件

  • C语言把所有的设备都当作文件,设备(如显示器)被处理的方式与文件相同

  •  文件指针是访问文件的方式
  • C语言中的I/O(输入/输出)通常使用printf()和scanf()两个函数。scanf()函数用于从标准输入(键盘)读取并格式化,printf()函数发送格式化输出到标准输出(屏幕)

输入&输出函数

getchar()&putchar()函数

  • getchar()函数从屏幕上读取下一个可用的字符,并把它返回为一个整数
int getchar()
  • putchar()函数把字符输出到屏幕上,并返回相同的字符
int putchar(int c)

getchar()函数和putchar()函数的练习

#include <stdio.h>
int main( )
{
   int c;
   printf( "Enter a value :");
   c = getchar( ); //读取一个char ,并返回为一个int
 
   printf( "\nYou entered: ");
   putchar( c ); // 可以在屏幕上显示
   printf( "\n");

   getchar(); //过滤回车
   getchar();//暂停
   return 0;
}

 gets()&puts()函数

  • gets()函数从stdin(键盘)读取一行到s所指向的缓冲区,直到一个终止符或EOF
char *gets(char *s)
  • puts函数把字符串s和一个尾随的换行符写入到stdout(屏幕)
int puts (const char *s)
  • 程序读取一整行直到该行结束

gets()&puts()函数的练习

#include <stdio.h>
 
int main( )
{
   char str[100]; //字符数组
 
   printf( "输入字符串 :");
   gets( str );
 
   printf( "\n你刚才输入的字符串是: "); 
   puts( str );
   getchar();
   return 0;
}

 scanf()&printf()函数

  • scanf( )函数从标准输入流stdin(键盘)读取输入,并根据提供的format来浏览输入
int scanf(const char*format,……)
  • printf( )函数把输入写入到标准输出流stdout(屏幕),并根据提供的格式产生输出
int printf(const char *format,……)

输入一个文本并按下回车键时,程序读取输入,但是要求格式要匹配

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main( ) {
 
   char str[100];
   int i;
				
   printf( "Enter a value :");
   scanf("%s %d", str, &i);
 
   printf( "\nYou entered: %s %d ", str, i);
   printf("\n");

   getchar();
   getchar();
   return 0;
}

C文件读写

打开文件

使用fopen()函数来创建一个新的文件或者打开一个已有的文件

FILE *fopen(const char * filename, const char * mode)
  •  filename是字符串,用来命名文件,访问模式mode的值是下列值
  • 如果处理的是二进制文件,则在后面加上b
  • rb、wb、ab、r+b、w+b、a+b、rb+、wb+、ab+

//创建一个文件指针
//FILE为库变量
FILE *fp = NULL;

//打开该文件
fp = fopen("D:/test100.txt", "w+"); //w+ 模式是 文件会被截断为零长度
fp = fopen("d:/test100.txt", "a+"); //a+ 模式是 文件不会被截断为零长度

 关闭文件

使用fclose()函数

  • 如果成功关闭文件,fclose()函数返回零
  • 如果关闭文件时发生错误,函数返回EOF
  • 这个函数实际上,会清空缓冲区中的数据,关闭文件,并释放用于该文件的所有内存。EOF是一个定义在头文件stdio.h中的常量
//关闭文件!!!, 如果不关闭 ,我们的内容没有保存到文件中!!
fclose(fp);

C语言写入文件

写入文件的函数

  • fputc函数
int putc(int c,FILE *fp)

fputc函数把参数c的字符值写入到fp所指向的输出流中,如果写入成功,它会返回写入的字符,如果发生错误,则会返回EOF。

  • fputs函数
int puts (const char*s,FILE *fp);

fputs()函数把字符串s写入到fp所指向的输出流中。如果写入成功,则返回一个非负值,如果发生错误,则返回EOF.同样的功能还可以用

  • fprint函数
int fprintf(FILE *fp,const char* format,……)

可以将一个字符串写入到文件中

写入文件的练习

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void main() {
	
	//创建一个文件指针
	//FILE为库变量
	FILE *fp = NULL;
	char name = 'c';

	//打开该文件
	fp = fopen("D:/test100.txt", "w+"); //w+ 模式是 文件会被截断为零长度
	//fp = fopen("d:/test100.txt", "a+"); //a+ 模式是 文件不会被截断为零长度
	//将内容写入到文件中
	fprintf(fp, "你好 北京~~\n");
	fputs("你好,上海~~\n", fp);

	fputc(name, fp);
    fputs("\n", fp);

	//关闭文件!!!, 如果不关闭 ,我们的内容没有保存到文件中!!
	fclose(fp);
	printf("创建, 写入信息完成");
	getchar();

}

控制台输出

 文件内容

 注意事项:

  • 如果将打开文件的方式改为“a+”,则当运行两次程序之后,文件的内容会变成

  •  输入单个字符串,也可使用
fputc('c',fp);

C语言读取文件

读取文件的函数

  • fgetc()函数:读取单个字符的函数

fgetc()函数从fp所指向的输入文件中要读取一个字符。返回值是读取的字符。如果发生错误则返回EOF

int fgetc(FILE *fp);
  • fgets()函数:从流中读取一个字符串

①函数fgets()从fp所指向的输入流中读取n-1个字符。它会把读取的字符串复制到缓冲区buf,并在最后追加一个null字符来终止字符串。

②如果这个函数在读取最后一个字符之前就遇到一个换行符‘\n’或文件的末尾EOF。则只会返回读取到的字符,包括换行符。

char *fgets (char *buf,int n, FILE *fp);
  • fscanf()函数:从流中读取一个字符串
int fscanf(FILE *fp,const char *format,……);

函数从文件中读取一个字符串,但是在遇到第一个空格字符时,它会停止读取

读取文件的练习

  •  从fp所指向的文件读取一行,到buff中
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

void main() {
	
	//创建一个文件指针
	FILE *fp = NULL;
	//定义一个缓冲区
	char buff[1024];
	char ch;

	//打开文件
	fp = fopen("d:/test200.txt", "r");

	//方法1
	fscanf(fp, "%s", buff);//从fp指向的文件读取一行,到buff里
	//输出
	printf("%s\n", buff);

	
	//关闭文件
	fclose(fp);

	getchar();
}

  •  读取单个字符
//方法二,读取单个字符
while ((ch = fgetc(fp)) != EOF) {
	putchar(ch);
	putchar(' ');
}

  •  读取整个文件
//方法3 读取整个文件
//说明,循环读取fp指向的文件内容,如果读到NULL,就结束

while(fgets(buff, 1024, fp)!=NULL) {
	printf("%s", buff);
}		

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值