C和C++中文件读写的区别

C和C++中文件读写的区别,第1张

C中采用的主要是文件指针的办法,C++中对文件的 *** 作主要运用了“文件流”(即非标准的输入输出)的思想

C语言:

fprintf() 比团辩 printf() 多第一个参数,格式化后将输出到一个stream,通常是到文件,其原型如下:

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

fprintf()函数根据指定的format(格式)发送信息(参数)到由stream(流)指定的文件.因此fprintf()可以使得信息输出到指定的文件.如: fprintf( out, "Hello %s\n", name )

fopen() 原型:FILE *fopen(const char *filename,const char *mode),塌册缺fopen实现三个功能:为使用而打开一个流,把一个文件和此流相连接,给此流返回一个FILE指针。mode表示打开状态的字符串,"r" 以只读方式打开文件,"w" 以只写方式打开文件;"a" 以追加方式打开文件;"r+" 以读写方式打开文件,如无文件出错;"w+" 以读写方式打开文件,如无文件生成新文件

fclose()的功能就是关闭用fopen()打开的文件,原型:int fclose(FILE *fp)//成功返回0,失败返回EOF。

在程序结束时一定要记得关闭打开的文件,不然可能会造成数据丢失的情况

C++文件流:

fstream// 文件流

ifstream  // 输入文件流

ofstream  // 输出文件流

在fstream类中,成员函数open()实现打开文件的姿竖 *** 作,从而将数据流与文件进行关联,通过ofstream,ifstream,fstream的对象来进行对文件的读写 *** 作

通过以下代码获取文件大小,然后分配相应大小的内存,一次雹敏轿性读取文件到此内存就可以加快读取速度了。具体代码如下:

#include <stdio.h>拿激

#include <stdlib.h>

int main ()

{

FILE * pFile

long lSize

char * buffer

size_t result

/* 若要一个byte不漏地读入整个文件,只能采用二进制方式打开 */

pFile = fopen ("test.txt", "rb" )

if (pFile==NULL)

{

fputs ("File error",stderr)

exit (1)

}

/* 获取文件大小 */

fseek (pFile , 0 , SEEK_END)

lSize = ftell (pFile)

rewind (pFile)

/* 分配内存存储整个文件 */

buffer = (char*) malloc (sizeof(char)*lSize)

if (buffer == NULL)

{

fputs ("Memory error",stderr)

exit (2)

}

/* 将文件拷贝到buffer中 */

result = fread (buffer,1,lSize,pFile)

if (result != lSize)

{

fputs ("Reading error",stderr)

exit (3)

}

/* 现在整个文件已经在buffer中,可由标准输出打印内容 */

printf("%s", buffer)

/* 结束演示,源肆关闭文件并释放内存 */

fclose (pFile)

free (buffer)

return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12127843.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存