C++中Txt文件读取和写入
Linux下C语言的文件读写

Linux下C语言的文件(fputc,fgetc,fwrite,fread对文件读写操作)//==================================fputc 向文件写入字符#include <stdio.h>#include <stdlib.h>main(){FILE *fp;char ch;if((fp=fopen("test.txt","w"))==NULL){printf("不能打开文件\n");exit(0);}while ((ch=getchar())!='\n')fputc( ch, fp );fclose(fp);}-------------小提示:fp=fopen("test.txt","w") ,把"w"改为"a" 可以创建文件并且追加写入内容exit(0); 需要包含stdlib.h 头文件,才能使用//============================================================fgetc 读取字符#include <stdio.h>#include <stdlib.h>main( int argc, char *argv[] ){char ch;FILE *fp;int i;if((fp=fopen(argv[1],"r"))==NULL){printf("不能打开文件\n");exit(0);}while ((ch=fgetc(fp))!=EOF)putchar(ch);fclose(fp);}文件结尾,通过判断EOF//============================================================== fwrite 的使用使数组或结构体等类型可以进行一次性读写#include <stdio.h>#include <stdlib.h>main(){FILE *fp1;int i;struct student{char name[10];int age;float score[2];char addr[15];}stu;if((fp1=fopen("test.txt","wb"))==NULL){printf("不能打开文件");exit(0);}printf("请输入信息,姓名年龄分数1 分数2 地址:\n");for( i=0;i<2;i++){scanf("%s %d %f %f %s",,&stu.age,&stu.score[0],&stu.score[1], stu.addr);fwrite(&stu,sizeof(stu),1,fp1);}fclose(fp1);}//=============================================================== fread 的使用#include <stdio.h>#include <stdlib.h>main(){FILE *fp1;int i;struct student{char name[10];int age;float score[2];char addr[15];}stu;if((fp1=fopen("test.txt","rb"))==NULL){printf("不能打开文件");exit(0);}printf("读取文件的内容如下:\n");for (i=0;i<2;i++){fread(&stu,sizeof(stu),1,fp1);printf("%s %d %7.2f %7.2f %s\n",,stu.age,stu.score[0],stu.score[1],stu.addr);}fclose(fp1);}。
美赛 c 常用代码

美赛c 常用代码全文共四篇示例,供读者参考第一篇示例:随着数学建模比赛的不断普及和发展,越来越多的参赛者开始关注美赛(MCM/ICM)比赛。
在进行比赛时,常用代码可以帮助参赛者更高效地完成模型建立和求解的工作。
本文将介绍一些常用的C 语言代码,帮助参赛者在美赛比赛中更加得心应手。
一、文件读写在数学建模比赛中,常常需要读取外部文件中的数据进行建模或者将模型的结果写入到文件中。
以下是常见的文件读写操作代码示例:```c// 文件读取FILE *file;char line[256];file = fopen("input.txt", "r");while (fgets(line, sizeof(line), file)) {// 处理读取的数据fclose(file);二、矩阵运算在数学建模比赛中,经常涉及到矩阵运算,比如矩阵相乘、矩阵转置等。
以下是一些常用的矩阵运算代码示例:```c// 矩阵相乘for (i = 0; i < n; i++) {for (j = 0; j < n; j++) {result[i][j] = 0;for (k = 0; k < n; k++) {result[i][j] += matrix1[i][k] * matrix2[k][j];}}}三、数值计算数学建模比赛中常常需要进行一些数值计算,比如求解方程、优化函数等。
以下是一些常用的数值计算代码示例:// 求解一元方程double a, b, c, x;x = (-b + sqrt(b * b - 4 * a * c)) / (2 * a);// 简单优化double x = 0.0;while (fabs(f(x)) > EPSILON) {x -= f(x) / f_prime(x);}```四、模拟算法在一些建模问题中,需要进行模拟来得出结果。
以下是一些常用的模拟算法代码示例:第二篇示例:美赛c 常用代码美赛(数学建模竞赛)是一个全球性的学科竞赛活动,旨在促进学生对实际问题的解决能力和数学建模能力的提高。
C++中进行txt文件读入和写入的方法示例

C++中进⾏txt⽂件读⼊和写⼊的⽅法⽰例前⾔⼤家可能⼤部分写代码都是在devc或者 vs⾥⾯直接输⼊数据,这⼀般常见于简单算法和数据的处理,但是⼀旦处理⼤数据的话,⼏百万,⼏千万,上亿个数据⼿打似乎不能轻易实现的,那么这篇⽂章我们来搞懂C++环境下如何进⾏io流读取txt⽂件,其实我们需要⼀个简单的代码进⾏分析。
这⾥直接给出源码,可以进⾏直接编译#include <fstream>#include <iostream>using namespace std;int main(){int a[10];ifstream in("读⼊.txt");for(int i=0;i<10;i++)in>>a[i];for(int i=0;i<10;i++)cout<<a[i]<<endl;ofstream out("输出.txt");out<<"完全ojbk";in.close();out.close();cin.get();}⾸先我们来补充⼀下相关知识:ifstream in(ifile);//构造⼀个ifstream并打开给定⽂件ofstream out;//构造输出⽂件流,未关联任何⽂件in.close();//关闭⽂件in.open(ifile + "2");//打开另⼀个⽂件好的看不懂没关系,继续向下看:第⼀步操作:在桌⾯上建⽴输⼊.txt ⽂件并且在⾥⾯按照格式输⼊相应的数据⽐如这个代码要对a[10]数组进⾏赋值,那么提前将txt⾥输⼊ 1 2 3 4 5 6 7 8 9 0ifstream in 就是读⼊⽂件然后按照循环输⼊数组每个位置的数值,这⾥要注意不能⽤cin ⽽是 in中间的cout指的是在dev⾥⾯输出数组与txt⽆关可以忽略第⼆步操作:同时输出ofstream 将内容输出到输出.txt 代码中是输出ojbk(奸笑)那么输出的内容就是第三步:in.close out.close 分别指代关闭⽂件简简单单三步,完全ojbk 啊,这样以后⼤家就可以熟练运⽤掌握读写⽂件有关的操作啦!完结,撒花总结以上就是这篇⽂章的全部内容了,希望本⽂的内容对⼤家的学习或者⼯作具有⼀定的参考学习价值,谢谢⼤家对的⽀持。
c语言的各种读写模式

c语言的各种读写模式C语言的各种读写模式一、以只读模式打开文件在C语言中,可以通过以只读模式打开文件来读取文件的内容。
只读模式不允许对文件进行写操作,可以保证文件的内容不会被意外修改。
使用只读模式打开文件的代码如下:```cFILE *file = fopen("file.txt", "r");if (file == NULL) {printf("无法打开文件\n");return 1;}// 读取文件内容的代码fclose(file);```在上述代码中,使用`fopen`函数以只读模式打开名为`file.txt`的文件。
如果文件打开失败,即文件不存在或无法访问,则会输出错误信息并返回。
如果文件成功打开,则可以在之后的代码中读取文件的内容。
二、以写入模式打开文件与只读模式相反,以写入模式打开文件允许对文件进行写操作。
使用写入模式打开文件时,如果文件不存在,则会创建一个新的文件;如果文件已存在,则会清空文件内容。
使用写入模式打开文件的代码如下:```cFILE *file = fopen("file.txt", "w");if (file == NULL) {printf("无法打开文件\n");return 1;}// 写入文件内容的代码fclose(file);```在上述代码中,使用`fopen`函数以写入模式打开名为`file.txt`的文件。
如果文件打开失败,则会输出错误信息并返回。
如果文件成功打开,则可以在之后的代码中写入文件的内容。
三、以追加模式打开文件追加模式是一种特殊的写入模式,它不会清空文件内容,而是在文件末尾继续写入新的内容。
使用追加模式打开文件的代码如下:```cFILE *file = fopen("file.txt", "a");if (file == NULL) {printf("无法打开文件\n");return 1;}// 写入文件内容的代码fclose(file);```在上述代码中,使用`fopen`函数以追加模式打开名为`file.txt`的文件。
c语言从txt文件中逐行读入数据存到数组中的实现方法 -回复

c语言从txt文件中逐行读入数据存到数组中的实现方法-回复C语言是一种强大而广泛使用的编程语言,它提供了丰富的功能和灵活性。
在许多应用程序中,我们需要从外部文件中读取数据并将其存储在数组中以便进行进一步处理。
本文将介绍如何使用C语言逐行读取txt文件并将数据存储到数组中的实现方法。
在开始之前,我们需要了解一些基本的概念。
首先,txt文件是一种普通文本文件,其中的内容以纯文本形式存储,不包含特殊格式或二进制数据。
其次,数组是一种数据结构,用于存储相同类型的数据元素。
在C 语言中,我们可以使用数组来存储各种类型的数据,例如整数、字符或字符串。
接下来,让我们来看一下逐行读取txt文件并将数据存储到数组中的步骤:步骤1:打开文件在C语言中,我们首先需要使用标准库函数fopen()来打开txt文件。
此函数需要两个参数:文件名和打开模式。
文件名表示要打开的txt文件的路径和名称,而打开模式表示文件的打开方式(例如,读取、写入或追加)。
对于我们的需求,我们将使用打开模式"r"来以只读方式打开txt文件。
下面是打开txt文件并检查是否成功的示例代码:c#include <stdio.h>int main() {FILE *file = fopen("data.txt", "r");if (file == NULL) {printf("无法打开文件!\n");return -1;}代码继续...fclose(file);return 0;}在上面的示例中,我们使用fopen()函数打开了名为"data.txt"的txt文件。
然后,我们检查file指针是否为空,以确定文件是否成功打开。
如果文件打开失败,我们将打印一条错误消息并返回-1。
步骤2:逐行读取文件内容一旦我们成功打开了txt文件,我们就可以使用标准库函数fgets()来逐行读取文件的内容。
vc文件读写使用

CFile和CStdioFile的文件读写使用方法(2009-08-18 10:35:01)标签:杂谈CFile//创建/打开文件CFile file;file.Open(_T("test.txt"),CFile::modeCreate|CFile::modeNoTruncate|CFile::modeRead Write);文件打开模式可组合使用,用“|”隔开,常用的有以下几种:CFile::modeCreate:以新建方式打开,如果文件不存在,新建;如果文件已存在,把该文件长度置零,即清除文件原有内容。
CFile::modeNoTruncate:以追加方式打开,如果文件存在,打开并且不将文件长度置零,如果文件不存在,会抛出异常。
一般与CFile::modeCreate一起使用,则文件不存在时,新建一个文件;存在就进行追加操作。
CFile::modeReadWrite:以读写方式打开文件。
CFile::modeRead:只读。
CFile::modeWrite:只写。
//写入数据CString strValue = "Hello World!";file.Write(strValue,strValue.GetLength());//追加数据file.SeekToEnd(); //将指针移至文件末尾进行追加file.Write(strValue,strValue.GetLength());//关闭文件file.Close();CStdioFileCStdioFile是CFile的派生类,对文件进行流式操作,对于文本文件的读写很有用处,可按行读取写入。
//写入数据CString strValue = "Hello World!";file.WriteString(strValue);//读取数据CString strRead;file.ReadString(strRead);当文件存在多行数据需要逐行读取时,可用函数BOOL CStdioFile::ReadString(CString& rString),当遇到"\n "时读取截断,如果文件未读完,返回true,否则返回false。
VC读写txt文件

C++读写文本文件#include <iostream>#include <fstream>using namespace std;int main(){const char filename[] = "mytext.txt";ofstream o_file;ifstream i_file;string out_text;//写o_file.open(filename);for (int i = 1; i <= 10; i++){o_file << "第" << i << "行\n"; //将内容写入到文本文件中}o_file.close();//读i_file.open(filename);if (i_file.is_open()){while (i_file.good()){i_file >> out_text; //将读取的内容存储到变量out_text中cout << out_text << endl; //在控制台输出读取的内容。
为什么最后一行的内容会出现两次}}elsecout << "打开文件:" << filename << " 时出错!";i_file.close();system("PAUSE");return 0;}为什么总会将最后一行显示两遍?我的循环似乎没错呀。
笔记:C++文件的读取和写入exit(1);// terminate with error}if(!outfile){cout<<"Unable to open otfile";exit(1);// terminate with error}int a,b;int i=0,j=0;int data[6][2];while(! myfile.eof()){myfile.getline(buffer,10);sscanf(buffer,"%d %d",&a,&b);cout<<a<<" "<<b<<endl;data[i][0]=a;data[i][1]=b;i++;}myfile.close();for(int k=0;k<i;k++){outfile<<data[k][0]<<" "<<data[k][1]<<endl;cout<<data[k][0]<<" "<<data[k][1]<<endl; }outfile.close();return 0;}无论读写都要包含<fstream>头文件读:从外部文件中将数据读到程序中来处理对于程序来说,是从外部读入数据,因此定义输入流,即定义输入流对象:ifsteam infile,infile就是输入流对象。
C语言文件操作完全攻略

C语言文件操作完全攻略数据的输入和输出几乎伴随着每个C 语言程序,所谓输入就是从“源端”获取数据,所谓输出可以理解为向“终端”写入数据。
这里的源端可以是键盘、鼠标、硬盘、光盘、扫描仪等输入设备,终端可以是显示器、硬盘、打印机等输出设备。
在C 语言中,把这些输入和输出设备也看作“文件”。
文件及其分类计算机上的各种资源都是由操作系统管理和控制的,操作系统中的文件系统,是专门负责将外部存储设备中的信息组织方式进行统一管理规划,以便为程序访问数据提供统一的方式。
文件是操作系统管理数据的基本单位,文件一般是指存储在外部存储介质上的有名字的一系列相关数据的有序集合。
它是程序对数据进行读写操作的基本对象。
在C 语言中,把输入和输出设备都看作文件。
文件一般包括三要素:文件路径、文件名、后缀。
由于在C 语言中'\' 一般是转义字符的起始标志,故在路径中需要用两个'\' 表示路径中目录层次的间隔,也可以使用'/' 作为路径中的分隔符。
例如,"E:\\ch10.doc"或者"E:/ch10.doc",表示文件ch10.doc 保存在E 盘根目录下。
"f1.txt" 表示当前目录下的文件f1.txt。
文件路径:可以显式指出其绝对路径,如上面的”E:\\”或者”E:/”等;如果没有显式指出其路径,默认为当前路径。
C 语言不仅支持对当前目录和根目录文件的操作,也支持对多级目录文件的操作,例如:或者中的file_1.txt 均是C 语言可操作的多级目录文件。
文件名:标识文件名字的合法标识符,如ch10、file_1 等都是合法的文件名。
后缀:一般用于标明文件的类型,使用方式为:文件名.后缀,即文件名与后缀之间用'.' 隔开。
常见的后缀类型有:doc、txt、dat、c、cpp、obj、exe、bmp、jpg 等。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
文件状态 我用过的唯一一个状态函数是 eof(), 它返回是否标志已经到了文件末尾。 我主要用在循பைடு நூலகம்中。 例如, 这个代码断统计小写‘e’ 在文件中出现的次数。
This is really awesome! 如果你想把整行读入一个 char 数组, 我们没办法用">>"?操作符,因为 每个单词之间的空格(空白字符)会中止文件的读取。为了验证:
char sentence[101]; fin >> sentence; 我们想包含整个句子, "This is really awesome!" 但是因 为空白, 现在它只包含了"This". 很明显, 肯定有读取整行的方法, 它就是 getline()。这就是我们 要做的。
fout.open("output.txt"); 你也可以把文件名作为构造参数来打开一个文件.
ofstream fout("output.txt"); 这是我们使用的方法, 因为这样创建和打开一个文件看起来更简单. 顺便说一句, 如果你要打开的文件不存在,它会为你创建一个, 所以不用担心文件创建的问题. 现在就输出到文件,看起来和"cout"的操作很像。对不了解控制台输出"cout"的人, 这里有个例 子。
int num = 150; char name[] = "John Doe"; fout << "Here is a number: " << num << "/n"; fout << "Now here is a string: " << name << "/n"; 现在保存文件,你必须关闭文件,或者回写 文件缓冲. 文件关闭之后就不能再操作了, 所以只有在你不再操作这个文件的时候才调用它,它 会自动保存文件。回写缓冲区会在保持文件打开的情况下保存文件, 所以只要有必要就使用它。 回写看起来像另一次输出, 然后调用方法关闭。像这样:
int number = 30; fout.write((char *)(&number), sizeof(number)); 第一个参数写做"(char *)(&number)". 这是把一个整型变量转为 char *指针。如果你不理解,可以立刻翻阅 C++的书籍, 如果有必要的话。第二个参数写作"sizeof(number)". sizeof() 返回对象大小的字节数. 就是这样! 二进制文件最好的地方是可以在一行把一个结构写入文件。 如果说,你的结构有 12 个不同的 成员。 用 ASCII?文件,你不得不每次一条的写入所有成员。 但二进制文件替你做好了。 看 这个。
结论 你应该已经掌握了如何使用 ASCII 文件和二进制文件。有很多方法可以帮你实现输入输出,尽 管很少有人使用他们。我知道很多人不熟悉文件 I/O 操作,我希望这篇文章对你有所帮助。 每 个人都应该知道. 文件 I/O 还有很多显而易见的方法,?例如包含文件 <stdio.h>. 我更喜欢用流 是因为他们更简单。 祝所有读了这篇文章的人好运, 也许以后我还会为你们写些东西
四、更多方法 我已经解释了 ASCII 文件和二进制文件, 这里是一些没有提及的底层方法。
检查文件 你已经学会了 open() 和 close() 方法, 不过这里还有其它你可能用到的方法。 方法 good() 返回一个布尔值,表示文件打开是否正确。 类似的,bad() 返回一个布尔值表示文件打开是否错误。 如果出错,就不要继续进一步的操作 了。 最后一个检查的方法是 fail(), 和 bad()有点相似, 但没那么严重。
笔记:C++文件的读取和写入
#include <iostream> #include <iomanip> #include <fstream>
using namespace std;
int main(){ char buffer[256]; ifstream myfile ("c:\\a.txt"); ofstream outfile("c:\\b.txt");
ifstream fin("file.dat", ios::binary); fin.read((char *)(&obj), sizeof(obj)); 我不多解释用法, 因为 它和 write()是完全相同的。二进制文件比 ASCII 文件简单, 但有个缺点是无法用文本编辑器编 辑。 接着, 我解释一下 ifstream 和 ofstream 对象的其他一些方法作为结束.
if(!myfile){ cout << "Unable to open myfile"; exit(1); // terminate with error
} if(!outfile){
cout << "Unable to open otfile"; exit(1); // terminate with error
三、二进制 输入输出 二进制文件会复杂一点, 但还是很简单的。首先你要注意我们不再使用插入和提取操作符(译者 注:<< 和 >> 操作符). 你可以这么做,但它不会用二进制方式读写。你必须使用 read() 和 write() 方法读取和写入二进制文件. 创建一个二进制文件, 看下一行。
ofstream fout("file.dat", ios::binary); 这会以二进制方式打开文件, 而不是默认的 ASCII 模式。 首先从写入文件开始。函数 write() 有两个参数。 第一个是指向对象的 char 类型的指针, 第二 个是对象的大小(译者注:字节数)。 为了说明,看例子。
fin.getline(sentence, 100); 这是函数参数. 第一个参数显然是用来接受的 char 数组. 第二个参 数是在遇到换行符之前,数组允许接受的最大元素数量. 现在我们得到了想要的结果:“This is really awesome!”。 你应该已经知道如何读取和写入 ASCII 文件了。但我们还不能罢休,因为二进制文件还在等着 我们。
读文件 方法 get() 每次返回一个字符。 方法 ignore(int,char) 跳过一定数量的某个字符, 但你必须传给它两个参数。第一个是需要跳过 的字符数。 第二个是一个字符, 当遇到的时候就会停止。 例子,
fin.ignore(100, ‘/n’); 会跳过 100 个字符,或者不足 100 的时候,跳过所有之前的字符,包括 ‘/n’。 方法 peek() 返回文件中的下一个字符, 但并不实际读取它。所以如果你用 peek() 查看下一个 字符, 用 get() 在 peek()之后读取,会得到同一个字符, 然后移动文件计数器。 方法 putback(char) 输入字符, 一次一个, 到流中。我没有见到过它的使用,但这个函数确实存 在。
struct OBJECT { int number; char letter; } obj; obj.number = 15; obj.letter = ‘M’; fout.write((char *)(&obj), sizeof(obj)); 这样就写入了整个结构! 接下来是输入. 输入也很简单, 因为 read()?函数的参数和 write()是完全一样的, 使用方法也相同。
ifstream fin("file.txt"); char ch; int counter; while (!fin.eof()) { ch = fin.get(); if (ch == ‘e’) counter++; } fin.close(); 我从未用过这里没有提到的其他方法。 还有很多方法,但是他们很少被使用。参考 C++书籍或者文件流的帮助文档来了解其他的方法。
C++中 Txt 文件读取和写入
分类: C/C++基础(75)
标签: c++nullstringios 文本编辑 file 2012-10-07 16:58 45182 人阅读 评论(3) 收藏 举报
C++中 Txt 文件读取和写入 一、ASCII 输出 为了使用下面的方法, 你必须包含头文件<fstream.h>(译者注:在标准 C++中,已经使用 <fstream>取代< fstream.h>,所有的 C++标准头文件都是无后缀的。)。这是 <iostream.h>的 一个扩展集, 提供有缓冲的文件输入输出操作. 事实上, <iostream.h> 已经被<fstream.h>包含 了, 所以你不必包含所有这两个文件, 如果你想显式包含他们,那随便你。我们从文件操作类的 设计开始, 我会讲解如何进行 ASCII I/O 操作。如果你猜是"fstream," 恭喜你答对了! 但这篇 文章介绍的方法,我们分别使用"ifstream"?和 "ofstream" 来作输入输出。 如果你用过标准控制台流"cin"?和 "cout," 那现在的事情对你来说很简单。 我们现在开始讲输 出部分,首先声明一个类对象。 ofstream fout; 这就可以了,不过你要打开一个文件的话, 必须像这样调用 ofstream::open()。