C语言文件读写 *** 作

C语言文件读写 *** 作,第1张

C语言文件读写 *** 作 0. 背景介绍

在C语言中,stdio.h库中提供了Input/Output *** 作的函数。本文主要是对文本读写的基本 *** 作进行记录,下面为相关函数的简单介绍和应用。

1. 打开文件

在C语言中,通过调用fopen打开文件,函数定义如下:

FILE * fopen ( const char * filename, const char * mode );

 Paramenters

  1. filename:文件路径
  2. mode:access mode访问方式
"r"Read: 打开一个文件用于读取数据,此时文件必须存在"w"Write:创建一个新的文件用于写入数据,如果此时存在同名的文件,则会将里面内容抛弃,作为一个新的空文件对待"a"append:在文件的末尾写入数据
#include 
int main ()
{
  FILE * pFile;
  pFile = fopen ("myfile.txt","w");
  if (pFile!=NULL)
  {
    fputs ("fopen example",pFile);
    fclose (pFile);
  }
  return 0;
}
2. 关闭文件

fclose函数用于关闭一个已经打开的文件,函数定义如下:

int fclose ( FILE * stream );

 文件关闭成功返回0,失败返回EOF。

#include 
int main ()
{
  FILE * pFile;
  pFile = fopen ("myfile.txt","wt");
  fprintf (pFile, "fclose example");
  fclose (pFile);
  return 0;
}
3. 写入文件 3.1 fprintf函数

利用fprintf函数可以将格式化的数据写入到文件中, 函数定义如下:

int fprintf ( FILE * stream, const char * format, ... );

 最常见的用例是在要写入字符串后面添加一个换行符,具体代码如下:

#include 
 
int main()
{
   FILE *fp = NULL;
   char* str = "This is testing for fprintf...";

   fp = fopen("test.txt", "w+");

   fprintf(fp, "%sn", str);

   fclose(fp);
}

 这样得到的test.txt文本中会自动添加一个换行符,效果如下:

3.2 fputs函数 

 fputs函数用于将一个字符串写入到文件中,工作原理是:复制从给定的字符串指针开始直到遇到空字符结束区间的内容,同时空字符并没copy到文件中。函数定义如下:

int fputs ( const char * str, FILE * stream );

 通过写入两个连续的字符串,查看效果:

#include 
 
int main()
{
   FILE *fp = NULL;
   char* str = "This is testing for fprintf...";

   fp = fopen("test.txt", "w");

   fputs(str, fp);
   fputs(str, fp);
   fclose(fp);
}

3.3. fwrite函数

 fwrite函数用于写入指定大小的内容到文件中, 函数定义如下:

size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );

Parameters 

        1. size:每一个需要写入元素的字节大小

        2. count:需要写入数据的大小

Return:返回值为最终成功写入元素的个数,应该与count大小相等。

#include 
#include 
int main()
{
   FILE *fp = NULL;
   char* str = "This is testing for fprintf...";

   fp = fopen("test.txt", "w");

   fwrite(str, sizeof(char), strlen(str), fp);
   fclose(fp);
}
4. 读取文件 4.1 fread函数

与fwrite函数类似,fread函数用于读取指定大小的内容,具体函数定义如下:

size_t fread ( void * ptr, size_t size, size_t count, FILE * stream );

参数含义与fwrite类似,就不多加介绍了。

#include 
#include 
int main()
{
   FILE *fp = NULL;
   char str[256] = {0};

   fp = fopen("test.txt", "r");

   fread(str, sizeof(char), sizeof(str), fp);
   printf("str: %sn", str);
   fclose(fp);
}

此时的文本文件内容如下:

输出的打印结果如下:

也就是说,fread函数会一直读取数据,直到大小满足或者遇到EOF,才会结束读取数据,空白字符并不会影响读取的进度。 


4.2 fgets函数

 fgets函数用于从文件中读取一个字符串,函数定义如下:

char * fgets ( char * str, int num, FILE * stream );

 从stream中读取num个char元素,如果遇到换行符或者end-of-file就结束读取。数据读取完成会在str后面自动添加一个空字符。

应用举例:给定一个文本文件,每一行都是一个文件的路径,读取文件获取每个文件的路径信息。

#include 
#include 
#include 
 
#define MAX_LINE 1024
 
int main()
{
	char buf[MAX_LINE];  
	FILE* fp;            
	int len;             
	if ((fp = fopen("bmpFiles.txt", "r")) == NULL)
	{
		perror("fail to read");
		exit(1);
	}

	while (fgets(buf, MAX_LINE, fp) != NULL)
	{
		len = strlen(buf);
		buf[len - 1] = '';  
		printf("%s %d n", buf, len - 1);
	}
	return 0;
}

输入的文本文件内容为:

输出信息为:

 上述即为文本文件读写的基本 *** 作!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5665877.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存