C语言-文件读写

文件读写

打开文件

fopen( 参数1,参数2)
//例
fopen("/Users/mac/Desktop/tmp/test.txt", "r")

打开文件使用fopen()函数,函数可以接收两个参数,第一个参数表示文件位置,第二个参数表示打开之后可进行的操作

参数1:

参数1表示文件位置,不同的系统有不同的书写方式

Linus系统、mac系统:/temp/test,txt

windows系统:C:\\tmp\\test.txt

注:对于mac系统想要获取文件路径,可以这样操作:右击文件夹选择“显示简介”,然后选中位置一栏右击拷贝即可;

参数2:

  • r:打开已有文件,只可以读取文件
  • w: 可以写入文件,如果文件不存在,则会新建一个;如果存在且有数据,则会从新写入
  • a:追加写入数据
  • r+:打开文本文件,允许读写
  • w+:打开并可以读写,如果不存在则会新建
  • a+:打开并可以读写,如果不存在则会新建,但是写入是追加模式

关闭文件:

直接调用fclose()函数:fclose(FILE *fp);

写入文件:

int fputs(int c,FILE *fp)函数:把参数 c 的字符值写入到 fp 所指向的输出流中

int fputs( const char s, FILE fp ):写入字符串

int fprintf(fp, const char *s):同样可以写入字符串

例子:

#include <stdio.h>
 
int main()
{
   FILE *fp = NULL;
 
   fp = fopen("/tmp/test.txt", "w+");
   fprintf(fp, "This is testing for fprintf...\n");
   fputs("This is testing for fputs...\n", fp);
   fclose(fp);
}
/* 文件中显示如下
This is testing for fprintf...
This is testing for fputs...
*/

读取文件:

int fgetc( FILE * fp ): 读取单个字符

char fgets( char buf, int n, FILE *fp ):读取字符串,遇到'\n'时结束

fscanf(FILE ,chra *buf): 读取字符串,遇到空格时结束;

例子:

#include <stdio.h>
 
int main()
{
   FILE *fp = NULL;
   char buff[255];
 
   fp = fopen("/tmp/test.txt", "r");
   fscanf(fp, "%s", buff);
   printf("1: %s\n", buff );
 
   fgets(buff, 255, (FILE*)fp);
   printf("2: %s\n", buff );
   
   fgets(buff, 255, (FILE*)fp);
   printf("3: %s\n", buff );
   fclose(fp);
 
}
/* 运行结果
1: This
2: is testing for fprintf...

3: This is testing for fputs...
*/

补充:一个文件可能会有好多行,想要读取整个文件,但是fscanf() fgets() 函数都不行,因此定义一个ch=fgetc(),利用循环判断读取的最后一个字符是不是文件结束EOF,如果不是就继续调用函数fgets()函数;代码如下;

#include<stdio.h>


char buff[255];
int main()
{
    FILE *fp = NULL;
    fp = fopen("/Users/mac/Desktop/tmp/test.txt", "r");
    char ch = '\0';
    while(ch!=EOF)
    {
        
        fgets(buff, 255, (FILE*)fp);
        printf("%s\n", buff);
        ch=fgetc(fp);
    }   
}
/* 运行结果
This is testing for fprintf...

his is testing for fputs...

Program ended with exit code: 0
*/
上一篇:ARPG游戏的技能系统和buff系统的一种实现


下一篇:buff/cache内存缓存过大,设置定时清理