(转载)C/C++读写文件
2011-04-26 08:40
253 查看
纯C的读文本文件
定义一个文件指针
FILE *fd;
用fopen打开一个文本文件,fopen的第一个参数为文件路和文件名,第二个参数定义的是打开文件的方式,这些参数实在是记不住,具体的如下:
fd = fopen("txtfile.txt","r");
执行完fopen后,需要判断一下,此文件是否确实被打开了。
if(NULL == fd)printf("文件未被打开");
接下来就可以进行文件的操作了。
读文件的函数有好几个,fread,fscanf,fgets。它们之间是有区别的:
fread是以块的方式来读取数据,按照指定的长度和指定的次数来读,读完后的数据是按照地址的方式来存储的,所以,比较适合用它来读二进制数,因为程序员比较清楚的知道自己要读多少的数据。
fgets是以串的方式来读取数据,从数据文件中读取不超过N-1个字符的数,读入的数据在最后一个字符后会加上一个截止符'/n',如果中间出现了回车,就会截止了。所以可以用fgets来读入一行的文本数据,应该是相当好用的。
fscanf与fgets类似,不过它是按照格式来读的,跟scanf一样。比如说,指定一个%d,那么它就读入一个整型的值;如果指定一个%s,那么它遇到一个空格也会停止的。
以下是一个实际的代码,用三种方式来完成文件的读取。
#include <stdio.h>
int main()
{
FILE *fd;
char buf[64];
fd = fopen("txtfile.txt","rb");
if(NULL == fd)
{
printf("read file error!");
return 0;
}
printf("read file success!/n");
while(!feof(fd))
{
/*method 1
fgets(buf,64,fd);
printf("%s/n",buf);
*/
/*method 2
fread(buf,64,1,fd);
printf("the %dth time: %s /n ",count,buf);
*/
fscanf(fd,"%s",buf);
printf("%s/n",buf);
}
fclose(fd);
return 1;
}
定义一个文件指针
FILE *fd;
用fopen打开一个文本文件,fopen的第一个参数为文件路和文件名,第二个参数定义的是打开文件的方式,这些参数实在是记不住,具体的如下:
参数 | 全写 | 意义 |
r | read | 读 |
w | write | 写 |
a | append | 追加 |
t | text | 文本文件,可省略 |
b | binary | 二进制文件 |
rt | 只读,文本文件 |
wt | 只写或建立,文本文件 |
at | 在文件末尾追加,文本文件 |
rb | 只读,二进制文件 |
wb | 只写或建立,二进制文件 |
ab | 在文件末尾追加,二进制文件 |
rt+ | 可读可写,文本文件 |
wt+ | 可读可写或建立,文本文件 |
at+ | 可读可写,在文件的末尾追加,文本文件 |
rb+ | 可读可写,二进制文件 |
wb+ | 可读可写或建立,二进制文件 |
ab+ | 可读可写,在文件的末尾追加,二进制文件 |
执行完fopen后,需要判断一下,此文件是否确实被打开了。
if(NULL == fd)printf("文件未被打开");
接下来就可以进行文件的操作了。
读文件的函数有好几个,fread,fscanf,fgets。它们之间是有区别的:
fread是以块的方式来读取数据,按照指定的长度和指定的次数来读,读完后的数据是按照地址的方式来存储的,所以,比较适合用它来读二进制数,因为程序员比较清楚的知道自己要读多少的数据。
fgets是以串的方式来读取数据,从数据文件中读取不超过N-1个字符的数,读入的数据在最后一个字符后会加上一个截止符'/n',如果中间出现了回车,就会截止了。所以可以用fgets来读入一行的文本数据,应该是相当好用的。
fscanf与fgets类似,不过它是按照格式来读的,跟scanf一样。比如说,指定一个%d,那么它就读入一个整型的值;如果指定一个%s,那么它遇到一个空格也会停止的。
以下是一个实际的代码,用三种方式来完成文件的读取。
#include <stdio.h>
int main()
{
FILE *fd;
char buf[64];
fd = fopen("txtfile.txt","rb");
if(NULL == fd)
{
printf("read file error!");
return 0;
}
printf("read file success!/n");
while(!feof(fd))
{
/*method 1
fgets(buf,64,fd);
printf("%s/n",buf);
*/
/*method 2
fread(buf,64,1,fd);
printf("the %dth time: %s /n ",count,buf);
*/
fscanf(fd,"%s",buf);
printf("%s/n",buf);
}
fclose(fd);
return 1;
}
#include <fstream> using namespace std; int main () { int student[5]={1,2,3,4,5}; ofstream outfile("student.txt",ios::binary); //二进制写。保存txt文档 outfile.write((char*)&student[0],sizeof(student)); outfile.close(); ifstream infile("student.txt",ios::binary); //二进制读。 infile.read((char*)&student[0],sizeof(student)); infile.close(); return 0; }
相关文章推荐
- 【转载】C++针对ini配置文件读写大全
- 转载:C/C++ 文件读写操作总结
- 【转载】C++读写ini配置文件GetPrivateProfileString()&WritePrivateProfileString()
- 转载:c++读写文件和测试程序运行时间的例子
- C++文件读写(转载)
- 转载 在C++中如何实现文件的读写?
- 【转载】C++ 简单读写文本文件、统计文件的行数、读取文件数据到数组
- C++读写文件(转载)
- C++文件读写详解(ofstream,ifstream,fstream)(转载)
- 【转载】C++文件读写详解(ofstream,ifstream,fstream)
- 【转载】 C++文件读写详解(ofstream,ifstream,fstream)
- (转载)你好,C++(5)如何输出数据到屏幕、从屏幕输入数据与读写文件?
- C++文件读写(转载)
- (转载)用C++中STL提供的fstream和stream_iterator读写二进制文件
- (转载)C++文件读写函数之——fopen、fread和fwrite、fgetc和fputc、fgets和fputs、ftellf和fseek、rewind
- C++ 的各种文件读写操作总结 [转载]
- C++自动创建命名的txt文件以及读写txt文件
- c/c++读写文件
- C++如何读写xml文件
- C++文件的读写操作