C语言中的文件操作(2)---标准I/O文件操作

在上一篇文章中,我们初步了解了freopen()函数的用法。但在一些算法竞赛中不允许使用文件重定向操作,这时我们就只能用标准C头文件stdio.h中的fopen()函数进行对文件的读写了。

fopen()函数的不足之处就在于使用的方法复杂,写起来比较麻烦。但是它灵活度比freopen()要高得多,比如支持多文件同时读写等等。

实现方法:在main函数之前定义一个类型为FILE*的指针,并使它指向创建的文件。

FILE* fp1 = fopen("D:\\abc.in", "r");
FILE* fp2 = fopen("D:\\abc.out", "w");

同样地,fopen的第一个参数为文件的路径和名称,第二个参数为文件操作的模式(在上一篇文章初步介绍过,用法一样)。当文件打开失败,则返回值为NULL。最后别忘记要调用fclose()。

下面仍然是一个实例,不过要比上一次的难一点,但还是很简单。

【输入】输入文件为abc.in:一组整数,它们的数量未知

【输出】输出文件为abc.out:第一行输出这组整数的个数,第二行输出这些整数的和。

源代码如下(在VS2008下编译通过):

int main(void)
{
    FILE* input = fopen("D:\\abc.in", "r");
    if (input == NULL)
    {
        printf("Failed to open the file!\n");
        return -1;
    } //如果打开失败,则退出程序
    FILE* output = fopen("D:\\abc.out", "w");
    int a, sum = 0, total = 0;
    while(fscanf(input, "%d", &a) != EOF) //在还未读到EOF时不断统计数字个数total和总和sum
    {
        sum += a;
        total++;
    };
    fprintf(output, "Sum is %d.\n", sum);
    fprintf(output, "There are %d numbers.\n", total);
    fclose(input);
    fclose(output);
    return 0;
}

分析这段代码,我们得到两个函数:

int fscanf(FILE *stream, const char *format, ...);
int fprintf(FILE *stream, const char *format, ...);

不难看出,他们分别表示对文件进行读写操作。与scanf和printf相似,只是第一个参数是指向指定文件的指针。这一点就没有freopen()函数那么简单。

好的,以上就是文件I/O的标准函数的常用部分,在下一篇文章我们会介绍一些其他不太正式的文件操作函数的用法。

时间: 2024-10-25 21:40:58

C语言中的文件操作(2)---标准I/O文件操作的相关文章

浅谈无缓存I/O操作和标准I/O文件操作差别

首先,先略微了解系统调用的概念: 系统调用,英文名system call,每一个操作系统都在内核里有一些内建的函数库,这些函数能够用来完毕一些系统系统调用把应用程序的请求传给内核,调用对应的的内核函数完毕所需的处理,将处理结果返回给应用程序,假设没有系统调用和内核函数,用户将不能编写大型应用程序,及别的功能,这些函数集合起来就叫做程序接口或应用编程接口(ApplicationProgramming Interface,API),我们要在这个系统上编写各种应用程序,就是通过这个API接口来调用系统

浅谈无缓存I/O操作和标准I/O文件操作区别

首先,先稍微了解系统调用的概念: 系统调用,英文名system call,每个操作系统都在内核里有一些内建的函数库,这些函数可以用来完成一些系统系统调用把应用程序的请求传给内核,调用相应的的内核函数完成所需的处理,将处理结果返回给应用程序,如果没有系统调用和内核函数,用户将不能编写大型应用程序,及别的功能,这些函数集合起来就叫做程序接口或应用编程接口(ApplicationProgramming Interface,API),我们要在这个系统上编写各种应用程序,就是通过这个API接口来调用系统内

无缓存I/O操作和标准I/O文件操作区别

本文转载于:http://www.360doc.com/content/11/0521/11/5455634_118306098.shtml 首先,先稍微了解系统调用的概念:       系统调用,英文名systemcall,每个操作系统都在内核里有一些内建的函数库,这些函数可以用来完成一些系统系统调用把应用程序的请求传给内核,调用相应的的内核函数完成所需的处理,将处理结果返回给应用程序,如果没有系统调用和内核函数,用户将不能编写大型应用程序,及别的功能,这些函数集合起来就叫做程序接口或应用编程

C语言中常用计时方法总结

转自:http://blog.csdn.net/fz_ywj/article/details/8109368 C语言中常用计时方法总结 1. time() 头文件:time.h 函数原型:time_t time(time_t * timer) 功能:返回以格林尼治时间(GMT)为标准,从1970年1月1日00:00:00到现在的此时此刻所经过的秒数. 用time()函数结合其他函数(如:localtime.gmtime.asctime.ctime)可以获得当前系统时间或是标准时间. 用difft

【C】C语言中文件操作相关内容

1. 文件和流的关系 C将每个文件简单地作为顺序字节流.每个文件用文件结束符结束,或者在特定字节数的地方结束,这个特定的字节数可以存储在系统维护的管理数据结构中.当打开文件时,就建立了和文件的关系. 在开始执行程序的时候,将自动打开3个文件和相关的流:标准输入流.标准输出流和标准错误.流提供了文件和程序的通信通道.打开一个文件将返回指向FILE结构(在stdio.h中定义)的指针,它包含用于处理文件的信息,也就是说,这个结构包含文件描述符.文件描述符是操作系统数组(打开文件列表的索引).每个数组

015_C语言中文件操作

 文件:存储在外部介质上的数据集合 ASCII码文件和二进制文件 流式文件和非流式文件 在内存中只有1和0,电脑在显示文件时,按一定编码显示 流式文件:输入输出的数据流的开始和结束仅受程序控制而不受物理符号控制 缓冲文件和非缓冲文件 每一个使用的文件都会在内存中开辟一个缓冲区 文件打开fopen 文件关闭fclose 读到文件末尾时即读到EOF 文件操作所用到的函数fgetc/fputc  fgets/fputs   fscanf/fprintf等一些函数使用时可同过帮助文档得知 文件定位函

c语言中文件相关操作

一 .首先介绍一下数据文件的类型: 1.二进制文件(映像文件):在内存中以二进制形式存取. 2.文本文件(ascii文件):以ascii码形式存取的文件. 通俗的讲,在Mac下,你把一个文件丢进记事本里面,如果打开是乱码就是二进制文件. 二.其次是文件类型指针: 简单的说文件类型指针就是存储文件信息的地址. 文件类型指针变量:定义一个指针类型的变量,用来指向存储文件信息的地址.用FILE定义.比如: FILE * fp 三.文件操作步骤(c语言中所有用到的函数都是f开头的.): 1.打开文件 f

C语言中的文件操作---重定向操作文件

先说个题外话,文件操作以及字符串与字符深入处理(就是那些什么puts(), getchar()什么的)是本人深入认识C++最后的两座大山.而今天先把重定向文件操作解决掉. 输入输出重定向恐怕是文件I/O操作中最简单的方法了,具体用法是现在main函数的开头加入两条语句,例如: freopen("D:\\input.txt", "r", stdin); freopen("D:\\output.txt", "w", stdout)

C语言中数据输入输出到文件操作freopen()函数(1)

例题一.把短句 "Hello World!" 保存到磁盘文件f1.txt中. #include <stdio.h> #include <stdlib.h> int main() { FILE *fp; /* 定义文件指针*/ if( ( fp = fopen("f1.txt", "w") ) == NULL){ /* 打开文件 */ printf("File open error!\n"); exit(