开发环境:Window10,CLion
1.声明
当前内容主要为本人复习c语言之用,主要包含fget和fput方式读写文本文件
主要复习
- 文件的打开和关闭(fopen和fclose)
- 文件字符的读取和写入(fgetc和fputc)
2.基本demo
#include <stdio.h>
#include <string.h>
#include <stdio.h>
#include <string.h>
/*
内容:使用fopen和fclose读取文件(实现字符文件的读取和写入)
使用fgetc和fputc方式实现读取和写入操作
时间:2021/05/01
作者:hy
*/
/**
* @description 文件中的行全部都写入到writeFile中
* @param readFile 读取的文件
* @param writeFile 写入的文件
*/
void readAndWriteFile0(FILE *readFile, FILE *writeFile)
{
/*char line[80];*/
// 读取文件也就是使用fscanf
int ch;
// 直接一个字符一个字符的读取,windows下默认结尾为\r\n
while((ch=fgetc(readFile))!=EOF){
if(ch=='\r' || ch=='\n'){
puts("");
fputc(ch,writeFile);
}else{
printf("%c",ch);
fputc(ch,writeFile);
}
}
/* Linux下运行正常,Window下运行不正常(不能按行读取)
// 读取文件,注意这里需要结尾加\n,表示读取换行符,前面的是读取这一行的所有字符除了\n
while(fscanf(readFile, "%[^\n]\n",line)==1)
{
int readLen = (int)strlen(line);
printf("read line(%d):%s\n",readLen,line);
fprintf(writeFile,"%s\n" ,line);
}*/
}
// 打开和关闭文件句柄
void readAndWriteFile(char *readFileName,char *writeFileName)
{
// using read model to read words.txt file
FILE *readFile=fopen(readFileName, "r");// 使用读取文件方式,如果文件不存在则返回0
// 这里需要检验文件是否打开失败,打开文件失败默认返回0,这里直接使用!即可
if(!readFile)
{
printf("无法打开文件:%s",readFileName);
return;
}
//FILE *writeFile=fopen(writeFileName, "w"); // 使用文件写入模式(文件不存在直接创建文件),追加文件使用a+
FILE *writeFile=fopen(writeFileName, "a+");
readAndWriteFile0(readFile, writeFile);
// close file inputsream
fclose(writeFile);
fclose(readFile);
}
int main(int argc,char *args[])
{
/* 手动使用,传递参数*/
readAndWriteFile("../resources/words.txt","../resources/writeWords.txt");
// 外界传递参数
/*if(argc!=2)
{
puts("参数必须为2个");
return 0;
}*/
// 第一个参数args[0]就是执行的本文件的名字,一共需要2个参数
// main函数会主动将参数个数传进来为argc
/*readAndWriteFile(args[1],args[3],args[2]);*/
return 0;
}
3.测试
测试成功!
4.总结
1.感觉windwos平台的读取一行数据和Linux下的操作不同
2.fgetc为按一个字符一个字符的读取,结果为int类型,需要在显示的时候使用%c方式输出,fputc为向当前的文件中写入一个字符
3.a+表示向文件中追加内容(文件不存在则报错),r表示读取,w表示清空文件并写入(没有文件会自动创建)
转载:https://blog.csdn.net/weixin_45492007/article/details/116329508
查看评论