C语言 文件

小白一个,看到有错误,希望指出,万分感谢

/****************************************************************
C语言文件概述:
    一般文件可分为二进制文件和文本文件。
 约定:我们把数据在终端上的表现形式称为数据的终端形式,而不
 称为字符形式。
 注:终端是指键盘 显示器等和用户直接打交道的输入输出设备。
 二进制文件是把内存中的书按其在内存中的储存形式原样输出到磁
 盘上存放,也就是说存放的是数据的原样式。
 文本文件是把数据终端形式的二进制数据输出到磁盘上存放,也就
 是说存放的是数据的终端形式。
****************************************************************/
/*文件打开函数: fopen 函数
 *    原型是 FILE * fopen(char * filename, char * mode);
 *    参数: fileopen 表示指定文件名称  mode 指打开文件的方式
 *文件关闭函数: fclose(文件指针)
 *    fclose函数也带回一个值,顺利的执行了关闭操作,返回值为0,否则
 *    返回值为 EOF(-1)。
 *注意:
 *    (1)除非有其他说明,输入又叫读,是指从文件(外存)输入到内存
 *         输出又叫写 是指从内存输出到外存。
 *    (2)如果不能实现打开任务,fopen函数将会带回一个出错信息。
 *         此时fopen函数将会带回一个空指针值 NULL
 *         NULL 在stdio.h 文件中已经被定义为 0
 *         常用下面的方法打开一个文件
 *         if (fp = fopen("filename", "r")) == NULL)
 *         {
 *             printf("cannot open this file\n");
 *             exit(0);  // 或者 return;
 *         }
 *     (3)在程序开始运行时,系统自动打开3个标准文件:标准输出 标准
 *          输入 标准出错输出。通常这三个文件都与终端相联系。因此从
 *          终端输入或向终端输出都不需要打开终端文件。系统自动定义了
 *          3个文件指针stdin stdout stderr,分别指子向终端输入 终端输
 *          出 标准出错输出。
 */
// fscanf fprintf 用于文本的格式化输入输出
// 一般调用形式为 fscanf 或 fprintf(文件指针,格式字符串,输入或输出列表)
// 文件测试 文件的读写
# include <stdio.h>

typedef struct student
{
 int code;
 char name[10];
 int age;
}St;

int main(void)
{
 FILE * out;
 int i;
 St a[2];
 // 检查打开操作是否出错
 if ((out = fopen("student.dat", "w+")) == NULL)
     printf("Cannot open output file.");
 for (i = 0; i < 2; ++i)
 {
  // 使用scanf也可以实现此功能
  fscanf(stdin, "%d%s%d", &a[i].code, &a[i].name, &a[i].age);
  fprintf(out, "%d%s%d\n", a[i].code, a[i].name, a[i].age);
 }
 fclose(out);
 
 return 0;
 }
 
 /*
     运行结果:
     1 王小林 18
  2 斯大林 99
  
  --------------------------------
  Process exited after 29.82 seconds with return value 0
  请按任意键继续. . .
    并且在此程序文件的文件夹中生成了一个名为 student.dat 的文件。
 
 */

/*
   fread 和 fwrite 函数用于和二进制文件相关的输入和输出
   一般调用形式为 :
       fread(buffer, size, count, fp);
    fwrite(buffer, size, count, fp);
 参数说明:
     buffer是一个指针,对于fread来说,它是读入数据的
  地址。对于fwrite来说它是要输出数据的地址。
  size是要读写的字节数。
  count是要读写size字节数据的个数
  fp是文件类型指针
*/

# include <stdio.h>

typedef struct student
{
 int code;
 char name[10];
 int age;
}St;

int main(void)
{
 FILE * out, * in;
 int i;
 St a[2] = {{1, "www", 18}, {2, "hhh", 99}};
 if ((out = fopen("stu.dat", "wb")) == NULL)
     printf("Cannot open output file.");
 for (i = 0; i < 2; ++i)
 {
  fwrite(&a[i], sizeof(St), 1, out);
 }
 fclose(out);
 if ((in = fopen("stu.dat", "rb")) == NULL)
     printf("Cannot open input file.");
 for (i = 0; i < 2; ++i)
 {
  fread(&a[i], sizeof(St), 1, in);
  printf("%d, %3s, %d\n", a[i].code, a[i].name, a[i].age);
 }
 fclose(in);
 
 return 0;
 }
 
 /*
     运行结果:
     1, www, 18
  2, hhh, 99
  
  --------------------------------
  Process exited after 0.0915 seconds with return value 0
  请按任意键继续. . .
 */

/*
    fgetc函数和 fputc函数 可用于读写文本文件或二进制文件
    注意:fgetc函数和 fputc函数读写字节级别(每次1字节)的
 数据,因此,fgetc函数和 fputc函数读写二进制文件的时候
 可以通过多次操作从而实现对任意数据类型的数据的读写。
 fgetc函数一般调用形式
     字符变量 = fgetc(文件指针);
 fputc函数一般调用形式
     fputc(字符, 文件指针);
 此处字符可以是任何数据类型的一个字节的部分数据。
*/

# include <stdio.h>
# include <stdlib.h>

int main(void)
{
 FILE * fp;
 char ch;
 if ((fp = fopen("out.dat", "w")) == NULL)
     printf("Cannot open file.");
 ch = getchar();
 while (ch != ‘#‘)
 {
  fputc(ch, fp);
  ch = getchar();
  }
 fclose(fp);
 
 return 0;
}

/*
    运行结果:
     w
  w
  e
  3
  #
  
  --------------------------------
  Process exited after 7.194 seconds with return value 0
  请按任意键继续. . .
*/

时间: 2024-10-25 07:12:17

C语言 文件的相关文章

C语言文件读写操作总结

C语言文件操作 一.标准文件的读写 1.文件的打开 fopen() 文件的打开操作表示将给用户指定的文件在内存分配一个FILE结构区,并将该结构的指针返回给用户程序,以后用户程序就可用此FILE指针来实现对指定文件的存取操作了.当使用打开函数时,必须给出文件名.文件操作方式(读.写或读写),如果该文件名不存在,就意味着建立(只对写文件而言,对读文件则出错),并将文件指针指向文件开头.若已有一个同名文件存在,则删除该文件,若无同名文件,则建立该文件,并将文件指针指向文件开头. fopen(char

C语言文件操作函数的编写

 编写文件操作的头文件 /************************************************************************** Copyright(C)    :2014-08-5 toto Filename       :file.h Author          :涂作权 Version         :V1.1 Date            :2014-08-05 Description     :文件操作的头文件 Others  

C 语言文件操作

1. 数据流:     程序与数据的交互以流的形式进行.fopen 即打开数据流,fclose 即刷新数据流.     所谓数据流,是一种抽象,表示这段数据像流一样,需要逐步接收,不能随机存取:也意味着是一段连续的内容,每块数据之间的顺序是确定的.比如一个很大的文件,不能一次性加载到内存里面,无法直接获取文件任意位置的内容,只能逐渐加载到内存.     比如 TCP 被抽象为 stream 而 UDP 被抽象为 block.     2. 缓冲区:     fopen 时, 磁盘 --> 缓冲区

C语言文件的概念和文件指针

1 C语言文件的概念 在程序中,当调用输入函数从外部文件中输入数据赋给程序中的变量时,这种操作成为“输入”或“读”:当调用输出函数把程序中变量的值输出到外部文件中时,这种操作称为“输出”或“写”. C 语言中,对于输入.输出的数据都按“数据流”的形式进行处理.也就是说,输出时,系统不添加任何信息:输入时,逐一读入数据,直到遇到 EOF 或文件结束标志就停止.C 程序中的输入.输出文件都以数据流的形式存储在介质上. 对文件的输入.输出方式也称为“存取方式”.C 语言中,有两种对文件的存取方式:顺序

c语言文件操作函数

c语言文件操作函数大全 fopen(打开文件) 相关函数 open,fclose 表头文件 #include<stdio.h> 定义函数 FILE * fopen(const char * path,const char * mode); 函数说明 参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态. mode有下列几种形态字符串: r 打开只读文件,该文件必须存在. r+ 打开可读写的文件,该文件必须存在. w 打开只写文件,若文件存在则文件长度清为0,即该文件

C语言文件的编译到执行的四个阶段

C语言文件的编译与执行的四个阶段并分别描述 C语言的编译链接过程要把我们编写的一个c程序(源代码)转换成可以在硬件上运行的程序(可执行代码),需要进行编译和链接.编译就是把文本形式源代码翻译为机器语言形式的目标文件的过程.链接是把目标文件.操作系统的启动代码和用到的库文件进行组织形成最终生成可执行代码的过程. 第一个阶段: 是预处理阶段,在正式的编译阶段之前进行.预处理阶段将根据已放置在文件中的预处理指令来修改源文件的内容.如#include指令就是一个预处理指令,它把头文件的内容添加到.cpp

go语言文件操作,这期资料比较详细( 欢迎加入go语言群: 218160862 )

go语言文件操作,这期资料比较详细 欢迎加入go语言群: go语言深圳群 golang深圳 218160862 文件操作 func Open(name string) (file *File, err error),*File 是实现了 io.Reader这个接口byte[] 转化为 bytes.Buffer:bytes.NewBuffer([]byte). 一.建立与打开 建立文件函数:func Create(name string) (file *File, err Error)func N

编译与反编译GNU Linux语言文件方法

/*********************************************************************  * Author  : Samson  * Date    : 11/21/2014  * Test platform:  *              3.13.0-24-generic  *              GNU bash, 4.3.11(1)-release  * ************************************

学习C/C++语言:文件的操作

#include<stdio.h> #include<stdlib.h> void main(int argc,char *argv[]) { FILE *in,*out; if(argc!=3) { printf("you forgot to enter a file name\n"); exit(0); } if((in=fopen(argv[1],"r"))==NULL) { printf("cannot open infli