C 中TXT文件读取和写入
- 格式:pdf
- 大小:94.87 KB
- 文档页数:6
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 常用代码全文共四篇示例,供读者参考第一篇示例:随着数学建模比赛的不断普及和发展,越来越多的参赛者开始关注美赛(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语言代码大全C语言是一种高级程序设计语言,广泛应用于计算机科学和软件开发领域。
它以其简洁、高效的特点而备受青睐。
本文将为您介绍一些常用的C语言代码,包括输入输出、流程控制、函数调用、数据结构等方面的代码示例。
一、输入输出1. 标准输入输出```c#include <stdio.h>int main() {int num;printf("请输入一个整数:");scanf("%d", &num);printf("您输入的数字是:%d\n", num);return 0;}```2. 文件读写```cint main() {FILE *file;char str[100];// 写入文件file = fopen("data.txt", "w");fprintf(file, "Hello, World!");fclose(file);// 读取文件file = fopen("data.txt", "r");fscanf(file, "%s", str);printf("从文件中读取的内容是:%s\n", str); fclose(file);return 0;}```二、流程控制1. 条件语句```cint main() {int num = 10;if (num > 0) {printf("该数字是正数。
\n"); } else if (num < 0) {printf("该数字是负数。
\n"); } else {printf("该数字是零。
\n"); }return 0;}```2. 循环语句```c#include <stdio.h>int main() {int num = 5;// while循环while (num > 0) {printf("当前数字:%d\n", num); num--;}// for循环for (int i = 0; i < 5; i++) {printf("当前数字:%d\n", i);}// do-while循环do {printf("当前数字:%d\n", num); num++;} while (num < 5);return 0;}```三、函数调用```c#include <stdio.h>int add(int a, int b) {return a + b;}int main() {int num1 = 5;int num2 = 3;int result = add(num1, num2);printf("两个数的和为:%d\n", result); return 0;}```四、数据结构1. 数组```c#include <stdio.h>int main() {int arr[5] = {1, 2, 3, 4, 5};for (int i = 0; i < 5; i++) {printf("数组元素:%d\n", arr[i]); }return 0;}```2. 结构体```c#include <stdio.h>struct Student {char name[20];int age;};int main() {struct Student stu1;strcpy(, "Tom");stu1.age = 18;printf("学生姓名:%s\n", ); printf("学生年龄:%d\n", stu1.age); return 0;}```以上只是C语言代码中的一小部分示例,C语言是一门非常庞大的编程语言,拥有众多的功能和特性。
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()来逐行读取文件的内容。
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。
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就是输入流对象。
CC++读写⽂本⽂件、⼆进制⽂件的⽅法⼀:⽬的掌握C语⾔⽂本⽂件读写⽅式;掌握C语⾔⼆进制⽂件读写⽅式;掌握CPP⽂本⽂件读写⽅式;掌握CPP⼆进制⽂件读写⽅式;⼆:C语⾔⽂本⽂件读写1. ⽂本⽂件写⼊//采⽤C模式对Txt进⾏写出void TxtWrite_Cmode(){//准备数据int index[50] ;double x_pos[50], y_pos[50];for(int i = 0; i < 50; i ++ ){index[i] = i;x_pos[i] = rand()%1000 * 0.01 ;y_pos[i] = rand()%2000 * 0.01;}//写出txtFILE * fid = fopen("txt_out.txt","w");if(fid == NULL){printf("写出⽂件失败!\n");return;}for(int i = 0; i < 50; i ++ ){fprintf(fid,"%03d\t%4.6lf\t%4.6lf\n",index[i],x_pos[i],y_pos[i]);}fclose(fid);}2. ⽂本⽂件读取//采⽤C模式对Txt进⾏读取void TxtRead_Cmode(){FILE * fid = fopen("txt_out.txt","r");if(fid == NULL){printf("打开%s失败","txt_out.txt");return;}vector<int> index;vector<double> x_pos;vector<double> y_pos;int mode = 1;printf("mode为1,按字符读⼊并输出;mode为2,按⾏读⼊输出;mode为3,知道数据格式,按⾏读⼊并输出\n");scanf("%d",&mode);if(mode == 1){//按字符读⼊并直接输出char ch; //读取的字符,判断准则为ch不等于结束符EOF(end of file)while(EOF!=(ch= fgetc(fid)))printf("%c", ch);}else if(mode == 2){char line[1024];memset(line,0,1024);while(!feof(fid)){fgets(line,1024,fid);printf("%s\n", line); //输出}}else if(mode == 3){//知道数据格式,按⾏读⼊并存储输出int index_tmp;double x_tmp, y_tmp;while(!feof(fid)){fscanf(fid,"%d%lf%lf\n",&index_tmp, &x_tmp, &y_tmp);index.push_back(index_tmp);x_pos.push_back(x_tmp);y_pos.push_back(y_tmp);}for(int i = 0; i < index.size(); i++)printf("%04d\t%4.8lf\t%4.8lf\n",index[i], x_pos[i], y_pos[i]);}fclose(fid);}三:C语⾔⼆进制⽂件读写1. ⼆进制⽂件写⼊//采⽤C模式写⼆进制⽂件void DataWrite_CMode(){//准备数据double pos[200];for(int i = 0; i < 200; i ++ )pos[i] = i ;//写出数据FILE *fid;fid = fopen("binary.dat","wb");if(fid == NULL){printf("写出⽂件出错");return;}int mode = 1;printf("mode为1,逐个写⼊;mode为2,逐⾏写⼊\n");scanf("%d",&mode);if(1==mode){for(int i = 0; i < 200; i++)fwrite(&pos[i],sizeof(double),1,fid);}else if(2 == mode){fwrite(pos, sizeof(double), 200, fid);}fclose(fid);}2.⼆进制⽂件读取//采⽤C模式读⼆进制⽂件void DataRead_CMode(){FILE *fid;fid = fopen("binary.dat","rb");if(fid == NULL){printf("读取⽂件出错");return;}int mode = 1;printf("mode为1,知道pos有多少个;mode为2,不知道pos有多少个\n"); scanf("%d",&mode);if(1 == mode){double pos[200];fread(pos,sizeof(double),200,fid);for(int i = 0; i < 200; i++)printf("%lf\n", pos[i]);free(pos);}else if(2 == mode){//获取⽂件⼤⼩fseek (fid , 0 , SEEK_END);long lSize = ftell (fid);rewind (fid);//开辟存储空间int num = lSize/sizeof(double);double *pos = (double*) malloc (sizeof(double)*num);if (pos == NULL){printf("开辟空间出错");return;}fread(pos,sizeof(double),num,fid);for(int i = 0; i < num; i++)printf("%lf\n", pos[i]);free(pos); //释放内存}fclose(fid);}四:C++⽂本⽂件读写1. ⽂本⽂件写⼊//采⽤CPP模式写txtvoid TxtWrite_CPPmode(){//准备数据int index[50] ;double x_pos[50], y_pos[50];for(int i = 0; i < 50; i ++ ){index[i] = i;x_pos[i] = rand()%1000 * 0.01 ;y_pos[i] = rand()%2000 * 0.01;}//写出txtfstream f("txt_out.txt", ios::out);if(f.bad()){cout << "打开⽂件出错" << endl;return;}for(int i = 0; i < 50; i++)f << setw(5) << index[i] << "\t" << setw(10) << x_pos[i] <<"\t" <<setw(10)<< y_pos[i] << endl;f.close();}2.⽂本⽂件读取//采⽤CPP模式读取txtvoid TextRead_CPPmode(){fstream f;f.open("txt_out.txt",ios::in);//⽂件打开⽅式选项:// ios::in = 0x01, //供读,⽂件不存在则创建(ifstream默认的打开⽅式)// ios::out = 0x02, //供写,⽂件不存在则创建,若⽂件已存在则清空原内容(ofstream默认的打开⽅式)// ios::ate = 0x04, //⽂件打开时,指针在⽂件最后。
#include <stdio.h>#define SIZE 5struct student_type{int num;char name[10];char sex[3];int age;char addr[30];char department[20];char major[20];char classes[20];char state[20];}stud[SIZE];//txt文件读取void read(){FILE *fp;int i;if((fp=fopen("stu.txt","r"))==NULL) //文件的放的位置是 .c文件夹下{ printf("cannot open file\n");return;}for(i=0;i<SIZE;i++){fscanf(fp,"%d%s%s%d%s%s%s%s%s",&stud[i].num,stud[i].name,stud[i].sex,&stud[i].age,stud[i].addr,stud[i].department, stud[i].major,stud[i].classesstud[i].state);}fclose(fp);}void screen(){int i;printf("%-13s%-9s%7s%9s%13s%9s%9s%9s\n","学号","姓名","性别","年龄","籍贯","院","系","班级","状态");for(i=0;i<SIZE;i++){printf("%-10d%-7s%7s%9d%13s%9s%9s%9s%6s\n",stud[i].num,stud[i].name,stud[i].sex,stud[i].age,stud[i].addr,stud[i].department,stud[i].major,stud[i].classes,stud[i].state);}}//写入txt文件void save( ){ FILE *fp;int i;if((fp=fopen("e:\\student.txt","w"))==NULL) //把student.txt 文件放在e盘 { printf("cannot open file\n");return;}for(i=0;i<SIZE;i++){fprintf(fp,"%-10d%-7s%7s%9d%13s%9s%9s%9s%6s \n",stud[i].num,stud[i].name,stud[i].sex,stud[i].age,stud[i].addr,stud[i].department,stud[i].major,stud[i].classes,stud[i].state);}fclose(fp);}void main(){ int i;printf("请依次输入:学号姓名性别年龄籍贯院系班级状态");printf("\n");for(i=0;i<SIZE;i++)scanf("%d%s%s%d%s%s%s%s%s",&stud[i].num,stud[i].name,stud[i].sex,&stud[i].age,stud[i].addr,stud[i].department, stud[i].major,stud[i].classes,stud[i].state);save( );/* read();screen();*/}。
C语言基本的输入输出格式1. 引言C语言是一种广泛应用于系统程序开发和嵌入式系统的高级编程语言。
在C语言中,输入和输出是程序与用户或外部设备之间进行交互的重要方式。
本文将详细介绍C语言中基本的输入输出格式,包括标准输入输出函数、格式化输入输出函数以及文件输入输出函数。
2. 标准输入输出函数C语言提供了一些标准的输入输出函数,用于从键盘读取用户输入或将输出显示在屏幕上。
2.1 printf函数printf函数用于将格式化的数据输出到标准输出设备(通常是屏幕)。
它的基本语法如下:int printf(const char *format, ...);其中,format是一个字符串,用于指定输出的格式,后面的参数是要输出的数据。
下面是一些常用的格式控制符:•%d:以十进制形式输出整数。
•%f:以浮点数形式输出。
•%c:以字符形式输出。
•%s:以字符串形式输出。
示例代码:#include <stdio.h>int main() {int age = 20;float height = 1.75;char gender = 'M';char name[] = "John";printf("Name: %s\n", name);printf("Age: %d\n", age);printf("Height: %.2f\n", height);printf("Gender: %c\n", gender);return 0;}运行结果:Name: JohnAge: 20Height: 1.75Gender: M2.2 scanf函数scanf函数用于从标准输入设备(通常是键盘)读取数据。
它的基本语法如下:int scanf(const char *format, ...);其中,format是一个字符串,用于指定输入的格式,后面的参数是用于接收输入数据的变量。