SZ54

如何用C语言进行文件读写

一:打开文件、关闭文件

函数:fopen();

包含头文件:stdio.h

声明:FILE * fopen(const char *filename,const char *mode);

参数一:文件流

参数二:文件打开模式

              文件打开模式参考如下:

模式 操作 区别 要求
r 从文件头开始 文件须存在。
r+ 读写 从文件头开始 文件须存在。
w 从文件头开始 若文件存在,则减其长度截为零;若不存在,则创建文件。
w+ 读写 从文件头开始 若文件存在,则将其长度截为零;如不存在,则创建文件。
a 从文件末尾开始 若文件存在,则从文件末尾开始添加;若不存在,则创建文件。
a+ 读写 从文件末尾开始 若文件存在,则可以读取整个文件,但只能在文件末尾添加;若不存在,则创建文件。

函数:fclose();

包含文件头:stdio.h

声明:int  fclose(FILE *file);

参数一:文件流

代码示例:

 

#include<stdio.h>
int main(void)
{
  FILE *fp;
  fp = fopen("a.txt","r");
  if(fp == NULL)
  {
    printf("error!");
    return 0;
  }
  fclose(fp)
  return 0;
}

 

二:文件写入

1、字符写入

函数:fputc();

包含文件头:stdio.h

声明:int fputc(char c,FILE *file)

参数一:写入字符

参数二:文件流

代码示例:

#include<stdio.h>
int main(void)
{
   FILE *fp = fopen("a.txt", "w");
   if(fp == NULL)
  {
     printf("error!\n");
     return 0;
   }
   char name[] = "Hello World!";
   int i;
   for(i = 0; i < strlen(name); i++)
   {
     fputc(name[i], fp);
   }
   fputc(\'\n\', fp);
   fclose(fp);
   return 0;
}

 

2、字符串写入

函数:fputs();

包含头文件:stdio.h

声明:int fputs(char *s,FILE *file);

参数一:写入字符串

参数二:文件流

代码示例:

#include<stdio.h>
int main(void)
{
   FILE *fp = fopen("a.txt", "w");
   if(fp == NULL)
   {
    printf("error!\n");
     return 0;
   }
   char name[] = "Hello Word!\n";
   fputs(name, fp);
   fclose(fp);
   return 0;
}

 

3、数据块写入

函数:fwrite();

包含头文件:stdio.h

声明:size_t fwrite(count void *ptr,size_t size,size_t nmemb,FILE *file);

参数一:写入数据地址

参数二:写入数据单字节数

参数三:写入项目个数

参数四:文件流

#include<stdio.h>
int main(void)
{
   FILE *fp = fopen("a.txt", "wb+");
   if(fp == NULL)
   {
     printf("error!\n");
     return 0;
   }
   char name[] = "Hello World!\n";
   fwrite(name, strlen(name), 1, fp);
   fclose(fp);
   return 0;
}

 

4、格式化写入

函数:fprintf();

包含头文件:stdio.h

声明:int fprintf(FILE *file,count char *format,...);

参数一:文件流

参数二:指定格式控制字符串

参数三:输出项

注:用法与printf();函数类似

代码示例:

 

#include<stdio.h>
int main(void)
{
   FILE *fp = fopen("a.txt", "wb+");
   if(fp == NULL)
   {
     printf("error!\n");
     return 0;
   }
   char name[] = "Hello World!\n";
   fprintf(fp, "this is %s\n", name);
   fclose(fp);
   return 0;
}

 

三:文件读取

1、字符读取

函数:fgetc();

包含头文件:stdio.h

声明:int fgetc(FILE *file);

参数一:文件流

代码示例:

#include<stdio.h>
int main(void)
{
   FILE *fp = fopen("a.txt", "r");
   if(fp == NULL)
   {
     printf("error!\n");
     return 0;
   }
   char c;
   while((c = fgetc(fp)) != EOF)
   {
     printf("%c", c);
   }
   fclose(fp);
   return 0;
}

 2、字符串读取

函数:fgets();

包含头文件:stdio.h

声明:char *fgets(char *buf,int bufsize,FILE *file);

参数一:储存读取数据

参数二:储存数据大小

参数三:文件流

代码示例:

#include <stdio.h>
int main()
{
    FILE *fp = fopen("a.txt", "r");
    if(fp == NULL)
    {
        printf("error!\n");
        return 0;
    }
    char buf[1024] = {0};
    while(fgets(buf, 1024, fp) != NULL)
    {
        printf("%s", buf);
    }
    fclose(fp);
    return 0;
}

 3、数据块读取

函数:fread();

包含头文件:stdio.h

声明:size_t fread(count void *str,size_t size,size_t count,FILE *file);

参数一:储存读取数据

参数二:要读取数据的字节数

参数三:要读取数据项

参数四:文件流

代码示例:

#include <stdio.h>
int main()
{
    FILE *fp = fopen("a.txt", "r");
    if(fp == NULL)
    {
        printf("error!\n");
        return 0;
    }
    char buf[102400] = {0};
    fread(buf, 1024, 100, fp);
    printf("%s", buf);
    fclose(fp);
    return 0;
}

 4、格式化读取

函数:fscanf();

包含头文件:sdtio.h

声明:int fscanf(FILE *file,count char *format,...);

参数一:文件流

参数二:读取格式

参数三:读取输入项

代码示例:

#include <stdio.h>
int main()
{
    FILE *fp = fopen("a.txt", "r");
    if(fp == NULL)
    {
        printf("error!\n");
        return 0;
    }
    char buf[1024] = {0};
    fscanf(fp, "%s", buf);
    printf("%s\n", buf);
    fclose(fp);
    return 0;
}

 

分类:

技术点:

相关文章: