在C语言中,stdio.h库中提供了Input/Output *** 作的函数。本文主要是对文本读写的基本 *** 作进行记录,下面为相关函数的简单介绍和应用。
1. 打开文件在C语言中,通过调用fopen打开文件,函数定义如下:
FILE * fopen ( const char * filename, const char * mode );
Paramenters
- filename:文件路径
- mode:access mode访问方式
#include2. 关闭文件int main () { FILE * pFile; pFile = fopen ("myfile.txt","w"); if (pFile!=NULL) { fputs ("fopen example",pFile); fclose (pFile); } return 0; }
fclose函数用于关闭一个已经打开的文件,函数定义如下:
int fclose ( FILE * stream );
文件关闭成功返回0,失败返回EOF。
#include3. 写入文件 3.1 fprintf函数int main () { FILE * pFile; pFile = fopen ("myfile.txt","wt"); fprintf (pFile, "fclose example"); fclose (pFile); return 0; }
利用fprintf函数可以将格式化的数据写入到文件中, 函数定义如下:
int fprintf ( FILE * stream, const char * format, ... );
最常见的用例是在要写入字符串后面添加一个换行符,具体代码如下:
#includeint 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 );
通过写入两个连续的字符串,查看效果:
#include3.3. fwrite函数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); }
fwrite函数用于写入指定大小的内容到文件中, 函数定义如下:
size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );
Parameters
1. size:每一个需要写入元素的字节大小
2. count:需要写入数据的大小
Return:返回值为最终成功写入元素的个数,应该与count大小相等。
#include4. 读取文件 4.1 fread函数#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); }
与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; }
输入的文本文件内容为:
输出信息为:
上述即为文本文件读写的基本 *** 作!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)