C++读取txt文件资料
vs2010中 c 怎么读写txt文件括号中的内容
读:从外部文件中将数据读到程序中来处理
对于程序来说,是从外部读入数据,因此定义输入流,即定义输入流对象:ifsteaminfile,infile就是输入流对象。
这个对象当中存放即将从文件读入的数据流。假设有名字为myfile.txt的文件,存有两行数字数据,具体方法:
int a,b;
ifstream infile;
infile.open("myfile.js");
if(infile.is_open())//文件打开成功,说明曾经写入过东西
{
while(infile.good() && !infile.eof())
{
memset(buf,0,1024);
infile.getline(buf,1204);
具体做法:
ofstream outfile;
outfile.open("myfile.bat"); //myfile.bat是存放数据的文件名
if(outfile.is_open())
{
outfile<<message<<endl;//message是程序中处理的数据
outfile.close();
ifstream infile;
infile.open("myfile.txt");//注意文件的路径
infile>>a>>b;//两行数据可以连续读出到变量里
infile.close()
如果是个很大的多行存储ห้องสมุดไป่ตู้文本型文件可以这么读:
char buf[1024];//临时保存读取出来的文件内容
string message;
用C_读取txt文件的方法
用C#读取txt文件的方法1、使用FileStream读写文件文件头:using System;using System.Collections.Generic;using System.Text;using System.IO;读文件核心代码:byte[] byData = new byte[100];char[] charData = new char[1000];try{FileStream sFile = new FileStream("文件路径",FileMode.Open);sFile.Seek(55, SeekOrigin.Begin);sFile.Read(byData, 0, 100); //第一个参数是被传进来的字节数组,用以接受FileStream对象中的数据,第2个参数是字节数组中开始写入数据的位置,它通常是0,表示从数组的开端文件中向数组写数据,最后一个参数规定从文件读多少字符.}catch (IOException e){Console.WriteLine("An IO exception has been thrown!");Console.WriteLine(e.ToString());Console.ReadLine();return;}Decoder d = Encoding.UTF8.GetDecoder();d.GetChars(byData, 0, byData.Length, charData, 0);Console.WriteLine(charData);Console.ReadLine();写文件核心代码:FileStream fs = new FileStream(文件路径,FileMode.Create);//获得字节数组byte [] data =new UTF8Encoding().GetBytes(String);//开始写入fs.Write(data,0,data.Length);//清空缓冲区、关闭流fs.Flush();fs.Close();2、使用StreamReader和StreamWriter文件头:using System;using System.Collections.Generic;using System.Text;using System.IO;StreamReader读取文件:StreamReader objReader = new StreamReader(文件路径);string sLine="";ArrayList LineList = new ArrayList();while (sLine != null){sLine = objReader.ReadLine();if (sLine != null&&!sLine.Equals(""))LineList.Add(sLine);}objReader.Close();return LineList;StreamWriter写文件:FileStream fs = new FileStream(文件路径, FileMode.Create);StreamWriter sw = new StreamWriter(fs);//开始写入sw.Write(String);//清空缓冲区sw.Flush();//关闭流sw.Close();fs.Close();用C#读取.txt文件,常用StreamReader sr = new StreamReader("TestFile.txt")///StreamReader sr = new StreamReader("TestFile.txt",Encoding.GetEncoding("GB2312"))///GBKString line;while ((line = sr.ReadLine()) != null){textBox1 .Text +=ii.ToString ()+" -"+line.ToString()+"\r\n";}加入引用:System.IOStreamReader objReader = new StreamReader("c:\\test.txt");System.IO 命名空间中的对象,尤其是System.IO.StreamReader 类。
c语言读取文件内容
c语言读取文件内容C语言读取文件内容。
在C语言中,我们经常需要读取文件的内容进行处理,比如配置文件、日志文件等。
下面我们就来学习一下如何在C语言中读取文件内容。
首先,我们需要使用C语言中的文件操作函数来打开文件。
我们可以使用fopen函数来打开一个文件,语法如下:```c。
FILE fopen(const char filename, const char mode);```。
其中,filename是要打开的文件名,mode是打开文件的模式,比如"r"表示只读,"w"表示只写,"a"表示追加写入等。
fopen函数会返回一个指向FILE类型的指针,我们可以通过这个指针来操作文件。
接下来,我们可以使用fgets函数来逐行读取文件内容,语法如下:```c。
char fgets(char str, int n, FILE stream);```。
其中,str是一个指向字符数组的指针,n是要读取的最大字符数,stream是指向FILE类型的指针。
fgets函数会读取文件中的一行内容,并将其存储到str指向的字符数组中。
另外,我们也可以使用fscanf函数来按照指定的格式来读取文件内容,语法如下:```c。
int fscanf(FILE stream, const char format, ...);```。
fscanf函数可以按照指定的格式从文件中读取内容,并将其存储到对应的变量中。
比如,我们可以使用%f来读取一个浮点数,%d来读取一个整数等。
在读取文件内容之后,我们需要使用fclose函数来关闭文件,以释放资源,语法如下:```c。
int fclose(FILE stream);```。
fclose函数会关闭由stream指向的文件,并释放相关的资源。
总结一下,我们可以通过fopen函数打开文件,然后使用fgets或者fscanf函数来读取文件内容,最后使用fclose函数关闭文件。
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语言从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中读出txt文件数据
在VC++应用程序中读取文本数据我们通常把数据存诸在txt文件上,但是我们通常要把这些数据取出来并进行处理。
下面我将介绍一种在VC++应用程序中读取文本数据的方法。
一。
前言因为经常要处理地质方面的数据。
但是很多数据它不是直接存贮在数据库文件(如Access文件等),而是存贮在txt文件。
经常有同学问我怎么通过编程读取实现文本文件中的数据。
其实存贮在txt文件也有它的好处,不像读取Access文件那样要注册数据源,设置比较麻烦,编写读取程序也比较复杂。
二。
程序原理首先我们知道假如要进行的文件操作只是简单的读写整行的字符串,那么最好使用CStdioFile,用它来进行此类操作非常方便。
因此我们便很自然想到:首先我们把文本文件的每行数据读到一个缓冲区,然后使用sscanf把它转化为字符格式。
那么具体该怎么做呢?比如在一个txt文件里每一行数据格式是这样的:A1 A2 A3 A3 ……An那么读取的主体代码是:CStdioFile File; // 定义一个CStdioFile类变量FileCString FileData; // 定义一个CString,作为一个缓冲区/*定义n个临时字符串变量,大小依据实际情况,这里暂设为10*/char TempStr1[10],TempStr2[10]……TempStrN[10];File.ReadString(FileData); // 将一行数据读到缓冲区/*将该行数据的n个字符读到n个临时字符串变量*/sscanf(FileData,"%s %s %s %s ……%s",TempStr1,TempStr2……TempStrN);这种读法的一个好处是对文本格式要求不严,如下面的格式也可以(前面可有未知个空格) A1 A2 (两个数据之间也可有未知个空格) A3 A3 ……An 三。
编程步骤下面我以一个单文档程序来具体说明我的做法。
该程序的主要功能是读取文本文件的坐标数据,然后在客户区里用直线将这些坐标连起来,并显示。
C语言读取txt文件实例
./write_txt.exe 输出text.txt里的内容
由上面结果可知,该程序正确读出了test.txt文本文件的内容!
c源文件同目录下新建一个名为testtxt的文本文件在其中随意写入内容比如我写入的内容为
C语言读取 txt文件实例
1.1建立一个.c文件夹,我这里建立的是test1.c文件夹,输入如下代码。
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4 #define MAX_LINE 1024
5 int main()
6{
7 char buf[MAX_LINE]; /*缓冲区*/
8 FILE *fp;
/*文件指针*/
9 int len;
/*行字符个数*/
10 if((fp = fopen("test.txt","r")) == NULL)
11 {
12 perror("fail to read");
13 exit (1) ;
14 }
15 while(fgets(buf,MAX_LINE,fp) != NULL)
16 {
17 len = strlen(buf);
18 buf[len-1] = '\0'; /*去掉换行符*/
19 printf("%s %d \n",buf,len -
22 }
1.2在.c源文件同目录下,新建一个名为test.txt的文本文件,在其中随意写入内容,比如我写入的内容为: ljp1234567
1.3 敲入如下指令进行编译,生成.exe可执行程序,如下图所示:
C#读取TXT文本数据添加到数据库
C#读取TXT⽂本数据添加到数据库protected void Button1_Click(object sender, EventArgs e){//使⽤FileStream读取⽂件FileStream fileStream = File.OpenRead(FileUpload1.PostedFile.FileName);StreamReader reader = new StreamReader(fileStream);SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString);conn.Open();//向数据库插⼊数据SqlCommand command = conn.CreateCommand();mandText = insertsql;string line = null;while ((line = reader.ReadLine()) != null){string[] str = line.Split('|');if (str.Length<13)//跳过第⼀⾏数据{continue;}string RefParma = str[0];string requestid = str[1];string agency_name = str[2];string channel_coding = str[3];string phone = str[4];string province_code = str[5];string cities_code = str[6];string TrafficSts = (str[7] == "20101") ? "1" : "-1";string product_type_code = str[8];string package_name = str[9];string processsing_date = str[10];string processsing_time = str[11];string money = str[12];//RefParma, requestid, agency_name, channel_coding, phone, province_code, cities_code, TrafficSts, product_type_code, package_name, processsing_date, processsing_time, moneycommand.Parameters.Clear(); //每次插⼊都要清除参数command.Parameters.Add(new SqlParameter("RefParma", RefParma));command.Parameters.Add(new SqlParameter("requestid", requestid));command.Parameters.Add(new SqlParameter("agency_name", agency_name));command.Parameters.Add(new SqlParameter("channel_coding", channel_coding));command.Parameters.Add(new SqlParameter("phone", phone));command.Parameters.Add(new SqlParameter("province_code", province_code));command.Parameters.Add(new SqlParameter("cities_code", cities_code));command.Parameters.Add(new SqlParameter("TrafficSts", TrafficSts));command.Parameters.Add(new SqlParameter("product_type_code", product_type_code));command.Parameters.Add(new SqlParameter("package_name", package_name));command.Parameters.Add(new SqlParameter("processsing_date", processsing_date));command.Parameters.Add(new SqlParameter("processsing_time", processsing_time));command.Parameters.Add(new SqlParameter("money", money));int tem=command.ExecuteNonQuery();}Response.Write("<script>alert('数据导⼊完成');</script>");fileStream.Close();reader.Close();conn.Dispose();}public string insertsql = "insert into Order_Table (RefParma,requestid,agency_name,channel_coding,phone,province_code,cities_code,TrafficSts,product_type_code,package_name,processsing_date,processsing_time,money) values (@Ref }。
C读txt解析
最近遇到个项目,要解析txt中的数据。
数据形式如下:目的:需要将参数名与数值分开存放(去等号)。
主要思想就是判断等号来区分参数还是数据,用回车来区分是否换行。
代码如下:#include"iostream"#include< fstream >#include"stdio.h"using namespace std;void main(){FILE* fp = NULL;//输入文件char c;string str[100];int i=0;/////存参数名string data[100];int k=0;/////存数据值fp = fopen("C:\\opest0233.txt","r");//只读方式打开,不破坏原始数据if(fp == NULL){printf("输入文件打开错误!\n");return;}c = fgetc(fp);while(c != EOF){///当前行,直到回车while(c!='='&&c!='\n'){str[i]+=c;c = fgetc(fp);}if(c=='='){c = fgetc(fp);while(c!='\n'){data[k]+=c;c = fgetc(fp);}}i++;k++;c = fgetc(fp);}fclose(fp);printf("数据读入结束!\n");getchar();i=0;注:我也只是c的新手,勿喷。
Q 535915157 欢迎讨论分享。
如何利用CC++逐行读取txt文件中的字符串(可以顺便实现文本文件的复制)
如何利用CC++逐行读取txt文件中的字符串(可以顺便实现文本文件的复制)如下代码均在Windows/VC++6.0下测试通过,请一定注意Linux和Windows文件格式的区别先用C语言写一个丑陋的程序:[cpp]1. #include <stdio.h>2. #include <stdlib.h>3. int main()4. {5. FILE *fp;6. if(NULL == (fp = fopen("1.txt", "r")))7. {8. printf("error\n");9. exit(1);10. }11.12. char ch;13. while(EOF != (ch=fgetc(fp)))14. {15. printf("%c", ch);16. }17.18. fclose(fp);19.20. return 0;21. }你只能看到结果,却没法利用每一行。
我们来改为:[cpp]1. // VC++6.02.3. #include <stdio.h>4. #include <string.h>5.6. int main()7. {8. char szTest[1000] = {0};9. int len = 0;10.11. FILE *fp = fopen("1.txt", "r");12. if(NULL == fp)13. {14. printf("failed to open dos.txt\n");15. return 1;16. }17.18. while(!feof(fp))19. {20. memset(szTest, 0, sizeof(szTest));21. fgets(szTest, sizeof(szTest) - 1, fp); // 包含了\n22. printf("%s", szTest);23. }24.25. fclose(fp);26.27. printf("\n");28.29. return 0;30. }这样,我们就是整行读取了。
C#生成PDF文档,读取TXT文件内容
C#生成PDF文档,读取TXT文件内容USING SYSTEM.IO;USING ITEXTSHARP.TEXT;USING ITEXTSHARP.TEXT.PDF;//需要在项目里引用ICSHARPCODE.SHARPZIPLIB.DLL和ITEXTSHARP.DLLPUBLIC STRING TXTFILEPATH;PUBLIC STRING SAVEPDFPATH;//保存PDF的路径#REGION 读取TXT内容PRIVATE STRING READXIEYI(STRING FILEPATH){STRING XIEYI = "";FILEINFO FI = NEW FILEINFO(FILEPATH);STREAMREADER SR = FI.OPENTEXT();XIEYI = SR.READTOEND();SR.CLOSE();RETURN XIEYI;}#ENDREGION#REGION 创建PDF文档方法PRIVATE VOID ZSCSC(){DOCUMENT DOCUMENT = NEW DOCUMENT(PAGESIZE.A4);TRY{//<APPSETTINGS>// <ADD KEY="TXTFILEPATH" VALUE="CONFIG/PUBCODE/"/>//<!-- 在WEBCOFIG里面加上的节点( VALUE值是WEBUI下的CONFIG/PUBCODE/)包文件保存在指定的文件下 -->//<APPSETTINGS>STRING NAME = ONLINE.WEBUI.ACCOUNTCONTROLLER.LOGINNAME + "_" + _PIC_ID + ".PDF";SAVEPDFPATH = APPDOMAIN.CURRENTDOMAIN.BASEDIRECTORY.TOSTRING() + CONFIGURATIONSETTINGS.APPSETTINGS["SAVEPDFPATH"] + NAME;// OBJECT FILENAME = "C://" + NAME; //FILENAME,文件保存路径PDFWRITER WRITER = PDFWRITER.GETINSTANCE(DOCUMENT, NEW FILESTREAM(SAVEPDFPATH.TOSTRING(), FILEMODE.CREATE));DOCUMENT.ADDTITLE("图片授权协议");DOCUMENT.ADDAUTHOR("");DOCUMENT.ADDHEADER("EXPIRES", "0");DOCUMENT.OPEN();BASEFONT BFSUN = BASEFONT.CREATEFONT(@"C:\WINDOWS\FONTS\SIMKAI.TTF", BASEFONT.IDENTITY_H, FALSE); //调用的字体FONT FONT = NEW FONT(BFSUN, 15);STRING TEXT = " 图片授权协议\N\N";DOCUMENT.ADD(NEW PARAGRAPH(TEXT, FONT));//<APPSETTINGS>// <ADD KEY="TXTFILEPATH" VALUE="CONFIG/PUBCODE/XIEYI.TXT"/>//<!-- 在WEBCOFIG里面加上的节点( VALUE值是WEBUI下的CONFIG/PUBCODE/XIEYI.TXT)这样的好处是:如果TXT的名称有改动,直接更改WEBCONFIG就行了 -->//<APPSETTINGS>TXTFILEPATH = APPDOMAIN.CURRENTDOMAIN.BASEDIRECTORY.TOSTRING() + CONFIGURATIONSETTINGS.APPSETTINGS["TXTFILEPATH"];FONT = NEW FONT(BFSUN, 10);TEXT = READXIEYI(TXTFILEPATH); //(@"C:\XIEYI.TXT");读取TXT文件的路径" 图片授权TXT文件协议内容";DOCUMENT.ADD(NEW PARAGRAPH(TEXT, FONT));//插入图片STRING STRCATALOGID;DATATABLE DT = DOWNPRO.GETCATALOGID(_PIC_ID);STRCATALOGID = DT.ROWS[0][0].TOSTRING();STRING FILENAMEURL = "/" + STRCATALOGID.TOLOWER() + "/THU/" + _PIC_ID.TOLOWER() + ".JPG";// "/WEST004/THU/BABF00254.JPG";//图片所在路径ITEXTSHARP.TEXT.IMAGE JPEG = ITEXTSHARP.TEXT.IMAGE.GETINSTANCE(NEW URI(FILENAMEURL));DOCUMENT.ADD(NEW PARAGRAPH("\N\N授权图片:", FONT));DOCUMENT.ADD(JPEG);//插入图片编号DOCUMENT.ADD(NEW PARAGRAPH("\N图片编号:"+ _PIC_ID, FONT));STRING ACTIVATECODE;ACTIVATECODE = _PIC_ID + ONLINE.WEBUI.ACCOUNTCONTROLLER.LOGINNAME; //用图片编号加上登陆名生成MD5编码,只取前25位STRING MD5CODE;MD5CODE = SYSTEM.WEB.SECURITY.FORMSAUTHENTICATION.HASHPASSWORDFORSTORINGINCONFIGFILE(ACTIVATECODE, "MD5").TOLOWER().SUBSTRING(0, 20); //加密MD5,只取前20位//"QJ-QQQQW-EEEER-TTTTY-UUUUN";STRING CODE;CODE = MD5CODE.SUBSTRING(0, 5);//每5位之间用"-"分开CODE = CODE + "-" + MD5CODE.SUBSTRING(5, 5);CODE = CODE + "-" + MD5CODE.SUBSTRING(10, 5);CODE = CODE + "-" + MD5CODE.SUBSTRING(15, 5);CODE = "QJ-" + CODE.TOSTRING().TOUPPER();DOCUMENT.ADD(NEW PARAGRAPH("\N授权码:"+ CODE, FONT));//CODE是授权码}CATCH (DOCUMENTEXCEPTION DE){RESPONSE.WRITE(DE.MESSAGE);}CATCH (IOEXCEPTION IOE){RESPONSE.WRITE(IOE.MESSAGE);}DOCUMENT.CLOSE();}#ENDREGION//按钮事件PROTECTED VOID BUTTON2_CLICK(OBJECT SENDER, EVENTARGS E){STRING NAME = ONLINE.WEBUI.ACCOUNTCONTROLLER.LOGINNAME + "_" + _PIC_ID + ".PDF";SAVEPDFPATH = APPDOMAIN.CURRENTDOMAIN.BASEDIRECTORY.TOSTRING() + CONFIGURATIONSETTINGS.APPSETTINGS["SAVEPDFPATH"] + NAME;IF (!FILE.EXISTS(SAVEPDFPATH.TOSTRING())){ZSCSC();//创建PDF文档READDOWNDATA();//下载TXT文件}ELSE{READDOWNDATA();//下载PDF文件}}//读取TXT文件并下载 PDF文件PUBLIC VOID READDOWNDATA(){STRING NAME = ONLINE.WEBUI.ACCOUNTCONTROLLER.LOGINNAME + "_" + _PIC_ID + ".PDF";SAVEPDFPATH = APPDOMAIN.CURRENTDOMAIN.BASEDIRECTORY.TOSTRING() + CONFIGURATIONSETTINGS.APPSETTINGS["SAVEPDFPATH"] + NAME;//读取文件,并写入到客户端响应FILESTREAM FS = NEW FILESTREAM(SAVEPDFPATH.TOSTRING(), FILEMODE.OPEN, FILEACCESS.READ);BYTE[] B = NEW BYTE[FS.LENGTH];FS.READ(B, 0, B.LENGTH);FS.FLUSH();FS.CLOSE();//FILE.DELETE(FILENAME.TOSTRING()); 下载之后不执行删除RESPONSE.CLEAR();RESPONSE.CLEARHEADERS();RESPONSE.BUFFER = FALSE;RESPONSE.CONTENTTYPE = "APPLICATION/OCTET-STREAM";//CONTENTTYPE;RESPONSE.APPENDHEADER("CONTENT-DISPOSITION", "ATTACHMENT;FILENAME=" + HTTPUTILITY.URLENCODE(NAME, SYSTEM.TEXT.ENCODING.UTF8));RESPONSE.APPENDHEADER("CONTENT-LENGTH", B.LENGTH.TOSTRING());RESPONSE.OUTPUTSTREAM.WRITE(B, 0, B.LENGTH);RESPONSE.FLUSH();RESPONSE.END();}。
c语言读取txt文件写入字符串无空格回车
c语言读取txt文件写入字符串无空格回车如果你想从一个文本文件读取内容,并将其作为一个字符串存储,但要排除空格和回车符,你可以使用C语言中的文件读写和字符串处理函数。
以下是一个简单的示例代码:3#include <stdio.h>#include <stdlib.h>#include <string.h>int main() {// 打开文本文件FILE *file = fopen("example.txt", "r");if (file == NULL) {perror("Error opening file");return 1;}// 获取文件大小fseek(file, 0, SEEK_END);long size = ftell(file);rewind(file);// 分配内存来存储文件内容char *content = (char *)malloc(size + 1);if (content == NULL) {perror("Error allocating memory");fclose(file);return 1;}// 读取文件内容到字符串fread(content, 1, size, file);// 在字符串中去除空格和回车符char *filteredContent = (char *)malloc(size + 1);int j = 0;for (int i = 0; i < size; i++) {if (content[i] != ' ' && content[i] != '\n' && content[i] != '\r') {filteredContent[j++] = content[i];}}// 添加字符串结束符filteredContent[j] = '\0';// 打印结果printf("Original Content:\n%s\n", content);printf("Filtered Content (without spaces and newlines):\n%s\n", filteredContent);// 关闭文件和释放内存fclose(file);free(content);free(filteredContent);return 0;}这个示例代码会打开一个名为 "example.txt" 的文本文件,读取其中的内容,并将内容存储在字符串中。
c语言从txt文件中逐行读入数据存到数组中的实现方法
在C语言中,可以使用标准库函数fgets()从文本文件中逐行读取数据,并将其存储到数组中。
下面是一个简单的示例代码,演示了如何实现这个过程:
在这个示例中,我们首先定义了一个常量MAX_LINE_LENGTH,用于指定每行数据的最大长度。
然后,我们定义了一个字符数组line,用于存储每行读取的数据。
我们还定义了一个指针数组data,用于存储每行数据的指针。
在读取数据时,我们使用malloc()函数为每行数据分配内存,并使用strcpy()函数将数据复制到数组中。
最后,我们遍历数组并输出其中的数据,并使用free()函数释放内存。
c#读取text文件
c#读取text⽂件直接读取text⽂件话不多说直接上代码演⽰// 读操作public string Read(){int a=0;int tiaoshu = 20;string strReadLine = "";// 读取⽂件的源路径及其读取流string strReadFilePath = @"F:\yxtcg\yxt\YouXingTuShuJu_V2\FileUp\优星图⽤户信息.txt";// StreamReader srReadFile = new StreamReader(strReadFilePath);StreamReader reader = new StreamReader(strReadFilePath, Encoding.GetEncoding("gb2312"));//⽤此格式汉字不会乱码strReadLine = reader.ReadToEnd(); //读取所有数据DataTable dt = JsonToDT.stringDatatable(strReadLine);//将json字符串转换成datatable//⽣成⼀个新的datatable//在datatable 添加字段for (int i = 0; i < i+1; i++){//每次循环20条for (a=a+0; a < tiaoshu; a++){//判断取到的openid是否为空//如果为空跳出循环break;//不为空将⾏添加到新的datatable 中}//将数据添加到sql中代码⾃⼰写//判断循环数是否⼤于长度if(tiaoshu>dt.Rows.Count){break;}a = tiaoshu + 1;tiaoshu = tiaoshu + 20;//清空datatable}// 关闭读取流⽂件reader.Close();Console.ReadKey();return strReadLine;}附带------>json字符串转换成datatable⽅法///<summary>///将json转换为DataTable///</summary>///<param name="strJson">得到的json</param>///<returns></returns>public static DataTable stringDatatable(string strJson){//转换json格式strJson = strJson.Replace(",\"", "*\"").Replace("\":", "\"#").ToString();//取出表名var rg = new Regex(@"(?<={)[^:]+(?=:\[)", RegexOptions.IgnoreCase);string strName = rg.Match(strJson).Value;DataTable tb = null;//去除表名strJson = strJson.Substring(strJson.IndexOf("[") + 1);strJson = strJson.Substring(0, strJson.IndexOf("]"));//获取数据rg = new Regex(@"(?<={)[^}]+(?=})");MatchCollection mc = rg.Matches(strJson);for (int i = 0; i < mc.Count; i++){string strRow = mc[i].Value;string[] strRows = strRow.Split('*');//创建表if (tb == null){tb = new DataTable();tb.TableName = strName;foreach (string str in strRows){var dc = new DataColumn();string[] strCell = str.Split('#');if (strCell[0].Substring(0, 1) == "\""){int a = strCell[0].Length;dc.ColumnName = strCell[0].Substring(1, a - 2);}else{dc.ColumnName = strCell[0];}tb.Columns.Add(dc);}tb.AcceptChanges();}//增加内容DataRow dr = tb.NewRow();for (int r = 0; r < strRows.Length; r++){dr[r] = strRows[r].Split('#')[1].Trim().Replace(",", ",").Replace(":", ":").Replace("\"", ""); }tb.Rows.Add(dr);tb.AcceptChanges();}return tb;}。
C语言从txt中提取数据
#include<stdio.h>#include<stdlib.h>#include<math.h>int main(int argc,char *argv[]){FILE *fp;int flag=0;int list_line=0,list_row=0;int i=0,j=0;int line_title[50];char c;double row_title[10];double list_data[50][10];if((fp=fopen("E:\\Study\\t_distribution.txt","r"))==NULL)//C语言中文件路径索引是双斜杠{printf("Can't open that file!");exit(1);}// 通过对每个字符的判断来达到对几乎任何排列比较规整的txt表格书写格式的数据读取// 最主要依靠的是fscanf对数据类型格式的自动判断while(!feof(fp)){fscanf(fp,"%c",&c); //若对文档全部进行字符输出,可观察到数据、空格、tab、以及回车之间的相对位置//有利于理解文件的数据流if(c>=48&&c<=57){if(!flag){fseek(fp,-1,SEEK_CUR); //因为在读完一个字符c用于判断是否是ASCII中阿拉伯数字范围后//文件指针已处于当前double数的第一位有效数字上,若在此位读取fp,//则读不到此位(因为fp从下一个点开始读);所以用fseek回溯一个字符长度//弥补之前的字符判断动作造成的fp移动fscanf(fp,"%lf",&row_title[list_row]);list_row++;}else{fseek(fp,-1,SEEK_CUR);fscanf(fp,"%lf",&list_data[i][j]);// printf("%lf ",list_data[i][j]);j++;}}if(c==10){fscanf(fp,"%d",&line_title[list_line]);list_line++;i++;j=0;flag=1;}}for(i=1;i<=list_line;i++)//从i=1开始{ //都是细节问题,这是由上面的程序决定的for(j=0;j<list_row;j++)//j=list_row-1结束printf("%lf ",list_data[i][j]);printf("\n");}system("pause");return 0;}。
C#读取固定文本格式的txt文件
C#读取固定⽂本格式的txt⽂件C#读取固定⽂本格式的txt⽂件⼀个简单的C#读取txt⽂档的程序,⽂档中⽤固定的格式存放着实例数据。
//判断关键字在⽂档中是否存在var isTr = File.ReadAllLines("1.txt").Any(x => x.Split(',')[0] == "设备ID:107157061").ToString();//获取序列中满⾜查询条件的第⼀条数据var a = File.ReadAllLines("1.txt").First(x => x.Split(',')[0] == "设备ID:108167353");//获取序列中满⾜查询条件的最后⼀条数据var b = File.ReadAllLines("1.txt").LastOrDefault(x => x.Split(',')[0] == "设备ID:108167353");//根据where查询符合条件的所有数据并返回泛型集合var c = File.ReadAllLines("1.txt").Where(x => x.Split(',')[0] == "设备ID:108167353").ToList();//将⽂档中所有数据返回为泛型集合var aa = File.ReadAllLines("1.txt").ToList();foreach(var item in aa){var bb = item.Split(',').ToList();}。
C#写入和读取TXT文件
C#写⼊和读取TXT⽂件写⼊:///<summary>///向txt⽂件中写⼊字符串///</summary>///<param name="value">内容</param>///<param name="isClearOldText">是否清除旧的⽂本</param>private void Wriete(string value, bool isClearOldText = true){string path = "txt⽂件的路径";//是否清空旧的⽂本if (isClearOldText){//清空txt⽂件using (FileStream stream = File.Open(path, FileMode.OpenOrCreate, FileAccess.Write)){stream.Seek(0, SeekOrigin.Begin);stream.SetLength(0);}}//写⼊内容using (StreamWriter writer = new StreamWriter(path, true)){writer.WriteLine(value);}}读取:///<summary>///读取txt⽂件,并返回⽂件中的内容///</summary>///<returns>txt⽂件内容</returns>private string ReadTxTContent(){try{string s_con = string.Empty;// 创建⼀个 StreamReader 的实例来读取⽂件// using 语句也能关闭 StreamReaderusing (StreamReader sr = new StreamReader("txt⽂件的路径")){string line;// 从⽂件读取并显⽰⾏,直到⽂件的末尾while ((line = sr.ReadLine()) != null){s_con += line;}}return s_con;}catch (Exception e){Console.WriteLine(e.Message);return null;}}end。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
c++学习笔记—c++对txt文件的读取与写入标签:c++IO2015-01-13 17:43 1880人阅读评论(0) 收藏举报分类:c/c++编程(8)声明:本文为博主原创文章,未经博主允许不得。
一、文件的输入输出头文件fstream定义了三个类型支持文件IO:ifstream从给定文件读取数据、ofstream向一个给定文件写入数据、fstream读写给定数据。
这些类型与cin和cout 的操作一样,我们可以用IO操作符来读写文件,还可以用getline从一个ifstream读取数据。
1、getline()函数getline的函数原型为:[cpp]view plain copy1.istream& getline(istream& is, string& str, char delim);2.istream& getline(istream&& is, string& str, char delim);3.istream& getline(istream& is, string& str);4.istream& getline(istream&& is, string& str);通常我们使用getline函数读取一整行,该函数接受一个输入流和一个string对象,函数从给定的输入流中读取容,直到遇到换行符为止,然后将所读的容存入到个string对象中。
另外,当函数为istream& getline (istream& is, string& str, char delim);形式时,函数遇到delim也会停止。
2、使用文件流对象当我们想要读入一个文件时,可以定义一个文件流对象,并将对象与文件相关联起来,每一个文件流类都定义了一个名为open的成员函数,完成一系列系统相关的操作。
open函数的原型为:[cpp]view plain copy1.void open (const char* filename, ios_base::openmode mode = ios_base::out);2.void open (const string& filename, ios_base::openmode mode = ios_base::out);文件模式(mode)有一下几种:[cpp]view plain copy1.ofstream outfile("E:\\out.txt", ofstream::app);上述代码打开out.txt文件,如果不存在,系统会创建此txt文件,并且定位到文件末尾。
打开的文件使用完成后一定要关闭,fstream提供了成员函数close()来完成此操作。
例:从hello.txt文件中读取数据并写入到out.txt中[cpp]view plain copy1.#include "stdafx.h"2.#include <vector>3.#include <string>4.#include <fstream>5.#include <iostream>ing namespace std;7.int _tmain(int argc, _TCHAR* argv[])8.{9. ifstream myfile("E:\\hello.txt");10. ofstream outfile("E:\\out.txt", ofstream::app);11. string temp;12.if (!myfile.is_open())13. {14. cout << "未成功打开文件" << endl;15. }16.while(getline(myfile,temp))17. {18. outfile<<temp;19. }20. myfile.close();21.return 0;22.}二、string流string头文件定义了三个类型来支持存IO,istringstream向string写入数据,ostringstream从string读取数据,stringstream既可从string读取数据也可向string写数据,就像string是一个IO流一样。
1、istringstream的用法[cpp]view plain copy1.#include "stdafx.h"2.#include <string>3.#include <sstream> //使用istringstream所需要的头文件4.#include <iostream>ing namespace std;6.int _tmain(int argc, _TCHAR* argv[])7.{8. string str = "I am a boy";9. istringstream is(str);10. string s;11.while (is >> s)12. {13. cout << s << endl;14. }15.return 0;16.}输出结果为:Iamaboy例:编写程序,将来自一个文件中的行保存在一个vector<string>中,然后使用istringstream从vector读取数据元素,每次读取一个单词。
[cpp]view plain copy1.#include "stdafx.h"2.#include <vector>3.#include <string>4.#include <fstream>5.#include <sstream>6.#include <iostream>ing namespace std;8.int _tmain(int argc, _TCHAR* argv[])9.{10. vector<string> vec;11. ifstream myfile("E:\\hello.txt");12. string temp;13.if (!myfile.is_open())14. {15. cout << "未成功打开文件" << endl;16. }17.while(getline(myfile,temp))18. {19. vec.push_back(temp);20. }21.for (auto it = vec.begin(); it != vec.end(); it++)22. {23. cout << *it << endl;24. }25. cout << "-----------------使用istringstream------------------------" << endl;26.for (auto it = vec.begin(); it != vec.end(); it++)27. {28.29. istringstream record(*it);30. string s;31.while (record >> s)32. cout << s << endl;33. }34.return 0;35.}运行结果如图所示://下述论述转自.cndev-lab.,程序作者:管宁[cpp]view plain copy1.#i nclude <iostream>2.#i nclude <sstream>ing namespace std;4.int main()5.{6. istringstream istr;7. istr.str("1 56.7",);8.//上述两个过程可以简单写成 istringstream istr("1 56.7");9. cout << istr.str()<<endl;10.int a;11.float b;12. istr>>a;13. cout<<a<<endl;14. istr>>b;15. cout<<b<<endl;16. system("pause");17.}上例中,构造字符串流的时候,空格会成为字符串参数的部分界,例子中对a,b对象的输入"赋值"操作证明了这一点,字符串的空格成为了整型数据与浮点型数据的分解点,利用分界获取的方法我们事实上完成了字符串到整型对象与浮点型对象的拆分转换过程。
str()成员函数的使用可以让istringstream对象返回一个string字符串(例如本例中的输出操作(cout<<istr.str();)。
2、ostringstream的用法ostringstream同样是由一个string对象构造而来,ostringstream类向一个string插入字符。
ostringstream的构造函数原形如下:[cpp]view plain copy1.ostringstream::ostringstream(string str);//下述论述转自.cndev-lab.,程序作者:管宁[cpp]view plain copy1.#i nclude <iostream>2.#i nclude <sstream>3.#i nclude <string>ing namespace std;5.int main()6.{7. ostringstream ostr;8.//ostr.str("abc");//如果构造的时候设置了字符串参数,那么增长操作的时候不会从结尾开始增加,而是修改原有数据,超出的部分增长9. ostr.put('d');10. ostr.put('e');11. ostr<<"fg";12.13. string gstr = ostr.str();14. cout<<gstr;15. system("pause");16.}在上例代码中,我们通过put()或者左移操作符可以不断向ostr插入单个字符或者是字符串,通过str()函数返回增长过后的完整字符串数据,但值得注意的一点是,当构造的时候对象已经存在字符串数据的时候,那么增长操作的时候不会从结尾开始增加,而是修改原有数据,超出的部分增长。