C 简单读写文本文件 统计文件的行数 读取文件数据到数组1

合集下载

C#简单读写txt文件的方法

C#简单读写txt文件的方法
更多关于C#相关内容感兴趣的读者可查看本站专题:《》、《》、《》、《》、《》、《》、《》、《》及《》
希望本文所述对大家C#程序设计有所帮助。
这篇文章主要介绍了c中的协变与逆变的相关知识在泛型或委托中如果不使用协变或逆变那么泛型类型是一个固定类型而使用协变或逆变的话则泛型类型可以实现多态化需要的朋友可以参考下
C#简单读写 txt文件的方法
本文实例讲述了C#简单读写txt文件的ຫໍສະໝຸດ 法。分享给大家供大家参考,具体如下:
//write txt StringBuilder builder = new StringBuilder(); FileStream fs = new FileStream(saveFileName, FileMode.Create); StreamWriter sw = new StreamWriter(fs, Encoding.Default); for (int i = 0; i < ds.Tables[0].Rows.Count; i++) {
DataRow dr = ds.Tables[0].Rows[i]; builder.AppendLine(dr["netsn"] + "," + dr["imei"]); //产品S/N号 + IMEI号 } sw.Write(builder); sw.Close(); fs.Close(); if (System.IO.File.Exists(saveFileName)) { System.Diagnostics.Process.Start(saveFileName); //保存成功后打开此文件 } //read txt string[] allLines = File.ReadAllLines(filePath);

文本文件数据的读写操作_C语言程序设计_[共4页]

文本文件数据的读写操作_C语言程序设计_[共4页]

228 返回值:关闭文件成功,返回0值,失败返回EOF。

应用举例:fclose(fp);函数参数:已打开的文件指针变量fp。

执行关闭文件函数,返回值为整型数。

当文件关闭成功时,返回0值,否则返回符号常量EOF(即-1),可以根据函数的返回值判断文件是否关闭成功。

例10.2以追加方式打开D盘VC文件夹下文件名为"text10_2 dat"的文本文件,如果fp不为NULL,输出“打开文件正常”,然后关闭该文件,若文件正常关闭输出“关闭文件正常”,否则输出“关闭文件错误”(文件名为ex10_2.c)。

#include <stdio.h>#include <stdlib.h>int main(){FILE*fp; /*定义一个文件指针 */ int iRe;fp = fopen("D:\\VC\\text10_2", "r"); /* 以只追加式打开text10_2文本文件 */ if(fp==NULL){printf("打开文件出现错误\n"); exit(0);} /* 提示打开文件失败,程序正常退出*/else puts("打开文件正常\n"); /*提示打开文件成功 */ iRe = fclose(fp); /* 关闭已打开的文件 */if(iRe == 0)printf("关闭文件正常\n"); /*提示关闭文件成功 */ else puts("关闭文件出现错误\n"); /*提示关闭错误 */return 0;}运行程序,如对应目录下文件存在,则屏幕输出如下:打开文件正常关闭文件正常10.2.2 文本文件数据的读写操作读写文件数据的操作先要为读或为写打开文件,文件打开时(为添加而打开文件时除外),文件位置指针指向文件的第1个字节,并从0开始计数,每读写一次,该位置指针将自动向后移动相应个字节。

C 简单读写文本文件 统计文件的行数 读取文件数据到数组

C   简单读写文本文件 统计文件的行数 读取文件数据到数组

打开一个文件时,将位置移动到文件尾
文件指针位置在 c++中的用法:
ios::beg ios::end ios::cur
当前位置 例子:
文件头 文件尾
file.seekg(0,ios::beg); //让文件指针定位到文件开头
file.seekg(0,ios::end); //让文件指针定位到文件末尾 file.seekg(10,ios::cur); //让文件指针从当前位置向文件末方向移动 10 个字节 file.seekg(-10,ios::cur); //让文件指针从当前位置向文件开始方向移动 10 个字节 file.seekg(10,ios::beg); //让文件指针定位到离文件开头 10 个字节的位置
很显然,根据以上程序,利用循环,可以逐行读取整个文件内容。
三、统计文件的行数
#include <iostream> #include <fstream> using namespace std;
int CountLines(char *filename) { ifstream ReadFile; int n=0; char line[512]; ReadFile.open(filename,ios::in);//ios::in 表示以只读的方式读取文件 if(ReadFile.fail())//文件打开失败:返回 0 {
逐个字符的读取文件: #include <iostream> #include <fstream> using namespace std; void main() { fstream in; char c; in.open("comn.txt",ios::in); while(!in.eof()) {

c++读取数据文件到数组的实例

c++读取数据文件到数组的实例

c++读取数据⽂件到数组的实例在刷题过程中,遇到的读取⽂件问题,只是记录⾃⼰的问题,新⼿~如果在⼀个txt⽂件当中有以下数据12 34 5 67 8 9 101、如果我们只是简单将这些数据保存在⼀个数组中:#include <iostream>#include <fstream>using namespace std;int main(){int i,datalen=0;double num[100];ifstream file("data.txt");while( ! file.eof() )file>>num[datalen++];for(int i=0;i<datalen;i++){cout<<num[i]<<" ";}file.close();return 0;}结果如下:2、但是如果我们想要和数据⽂件⼀样的形式:#include <iostream>#include <fstream>using namespace std;int main(){double num[10][10];ifstream file("data.txt");for(int i=1;i<=4;i++){for(int j=1;j<=i;j++){file>>num[i][j];}}for(int i=1;i<=4;i++){for(int j=1;j<=i;j++){cout<<num[i][j]<<" ";}cout<<endl;}file.close();return 0;}得到的就是数据⽂件的形式了当然这是读取到double数组。

⾃⾏设置。

以上这篇c++读取数据⽂件到数组的实例就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。

c语言从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()来逐行读取文件的内容。

简述c语言中文件的读写流程

简述c语言中文件的读写流程

简述c语言中文件的读写流程在C语言中,文件的读写主要涉及到以下几个步骤:1. 打开文件:使用 `fopen` 函数打开文件。

该函数需要两个参数:要打开的文件名和打开模式(如 "r" 表示读取,"w" 表示写入,"a" 表示追加等)。

```cFILE fopen(const char filename, const char mode);```2. 读取/写入文件:使用 `fread` 或 `fwrite` 函数来读取或写入文件。

这些函数需要指定要读取或写入的元素大小和数量,以及文件指针。

```csize_t fread(void ptr, size_t size, size_t count, FILE stream);size_t fwrite(const void ptr, size_t size, size_t count, FILE stream);```3. 关闭文件:使用 `fclose` 函数关闭文件。

```cint fclose(FILE stream);```4. 错误处理:如果在打开、读取或写入文件时发生错误,可以使用 `ferror` 函数检查错误。

如果发生错误,该函数将返回非零值。

```cint ferror(FILE stream);```下面是一个简单的例子,演示如何打开一个文件、读取其中的内容,然后关闭文件:```cinclude <>int main() {FILE fp;char buffer[255];fp = fopen("", "r"); // 打开文件以进行读取if (fp == NULL) { // 检查文件是否成功打开printf("无法打开文件\n");return 1;}while (fgets(buffer, sizeof(buffer), fp) != NULL) { // 读取文件内容 printf("%s", buffer); // 打印读取的内容}fclose(fp); // 关闭文件return 0;}```。

vc中读出txt文件数据

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语言读写文件操作

C语言读写文件操作

C语言读写文件操作C语言中提供了丰富的文件读写操作函数,可以用来打开、创建、读取、写入、关闭文件。

下面将介绍这些函数的使用方法。

1.打开文件在C语言中,我们可以使用`fopen`函数来打开一个文件。

该函数的原型如下:```cFILE *fopen(const char *filename, const char *mode);```其中,`filename`是要打开的文件名,`mode`是打开文件的模式。

常见的文件打开模式有以下几种:-`"r"`:只读模式,打开文件用于读取数据。

-`"w"`:写入模式,若文件存在,则清空文件内容;若文件不存在,则创建文件。

-`"a"`:追加模式,若文件存在,则在文件末尾追加内容;若文件不存在,则创建文件。

-`"r+"`:读写模式,打开一个已存在的文件,可以读取、写入文件内容。

-`"w+"`:读写模式,若文件存在,则清空文件内容;若文件不存在,则创建文件。

-`"a+"`:读写模式,若文件存在,则在文件末尾追加内容;若文件不存在,则创建文件。

打开文件成功后,`fopen`函数返回一个类型为`FILE*`的指针,用于后续的文件读写操作。

示例代码:```cFILE *fp = fopen("file.txt", "r");if (fp == NULL)printf("打开文件失败\n");return -1;```2.关闭文件在文件读写操作完成后,我们需要使用`fclose`函数来关闭文件,释放资源。

该函数的原型如下:```cint fclose(FILE *stream);```其中,`stream`是要关闭的文件指针。

示例代码:```cint result = fclose(fp);if (result == 0)printf("关闭文件成功\n");} elseprintf("关闭文件失败\n");```3.读取文件内容C语言中提供了多个函数用于从文件中读取数据,常用的函数有:- `fgetc`:从文件中读取一个字符。

(完整版)C语言统计文件中的字符数、单词数以及总行数

(完整版)C语言统计文件中的字符数、单词数以及总行数

C语言统计文件中的字符数、单词数以及总行数统计文件的字符数、单词数以及总行数,包括:每行的字符数和单词数文件的总字符数、总单词数以及总行数注意:空白字符(空格和tab缩进)不计入字符总数;单词以空格为分隔;不考虑一个单词在两行的情况;限制每行的字符数不能超过1000。

代码如下#include <stdio.h>#include <string.h>int *getCharNum(char *filename, int *totalNum);int main(){char filename[30];// totalNum[0]: 总行数totalNum[1]: 总字符数totalNum[2]: 总单词数int totalNum[3] = {0, 0, 0};printf("Input file name: ");scanf("%s", filename);if(getCharNum(filename, totalNum)){printf("Total: %d lines, %d words, %d chars\n", totalNum[0], totalNum[2], totalNum[1]);}else{printf("Error!\n");}return 0;}/*** 统计文件的字符数、单词数、行数** @param filename 文件名* @param totalNum 文件统计数据** @return 成功返回统计数据,否则返回NULL**/int *getCharNum(char *filename, int *totalNum){FILE *fp; // 指向文件的指针char buffer[1003]; //缓冲区,存储读取到的每行的内容int bufferLen; // 缓冲区中实际存储的内容的长度int i; // 当前读到缓冲区的第i个字符char c; // 读取到的字符int isLastBlank = 0; // 上个字符是否是空格int charNum = 0; // 当前行的字符数int wordNum = 0; // 当前行的单词数if( (fp=fopen(filename, "rb")) == NULL ){perror(filename);return NULL;}printf("line words chars\n");// 每次读取一行数据,保存到buffer,每行最多只能有1000个字符while(fgets(buffer, 1003, fp) != NULL){bufferLen = strlen(buffer);// 遍历缓冲区的内容for(i=0; i<bufferLen; i++){c = buffer[i];if( c==' ' || c=='\t'){ // 遇到空格!isLastBlank && wordNum++; // 如果上个字符不是空格,那么单词数加1isLastBlank = 1;}else if(c!='\n'&&c!='\r'){ // 忽略换行符charNum++; // 如果既不是换行符也不是空格,字符数加1isLastBlank = 0;}}!isLastBlank && wordNum++; // 如果最后一个字符不是空格,那么单词数加1isLastBlank = 1; // 每次换行重置为1// 一行结束,计算总字符数、总单词数、总行数totalNum[0]++; // 总行数totalNum[1] += charNum; // 总字符数totalNum[2] += wordNum; // 总单词数printf("%-7d%-7d%d\n", totalNum[0], wordNum, charNum);// 置零,重新统计下一行charNum = 0;wordNum = 0;}return totalNum;}在D盘下创建文件demo.txt,并输入如下的内容:运行程序,输出结果为:上面的程序,每次从文件中读取一行,放到缓冲区buffer,然后遍历缓冲区,统计当前行的字符和单词数。

C语言实现按行读写文件

C语言实现按行读写文件

C语言实现按行读写文件C语言提供了丰富的文件操作函数,可以很方便地实现按行读写文件的功能。

下面是一个简单的示例代码,可以实现按行读取一个文件,将其逐行写入另一个文件。

```c#include <stdio.h>#include <stdlib.h>#define MAX_LINE_LENGTH 100int maiFILE *input_file, *output_file;char input_filename[100], output_filename[100];char line[MAX_LINE_LENGTH];printf("请输入需要读取的文件名:");scanf("%s", input_filename);printf("请输入需要写入的文件名:");scanf("%s", output_filename);//打开输入文件input_file = fopen(input_filename, "r");if (input_file == NULL)printf("无法打开输入文件\n");return 1;}//打开输出文件output_file = fopen(output_filename, "w");if (output_file == NULL)printf("无法打开输出文件\n");fclose(input_file);return 1;}//按行读取输入文件,并写入输出文件while (fgets(line, MAX_LINE_LENGTH, input_file) != NULL) fputs(line, output_file);}//关闭文件fclose(input_file);fclose(output_file);printf("文件已成功写入\n");return 0;```这段代码使用了`fgets(`函数来逐行读取文件内容,`fputs(`函数来将每行内容写入文件。

c语言读写文件代码

c语言读写文件代码

c语言读写文件代码C语言读写文件代码在C语言中,文件的读写是非常重要的操作。

我们可以通过文件读取数据,也可以将数据写入到文件中。

这里提供一个全面的详细的文件读写代码示例。

1. 文件读取要读取一个文件,我们需要使用fopen()函数打开该文件,并使用fscanf()函数从该文件中读取数据。

以下是一个简单的示例:```#include <stdio.h>int main() {FILE *fp;char file_name[50], str[100];printf("Enter the file name: ");scanf("%s", file_name);fp = fopen(file_name, "r");if (fp == NULL) {printf("Error: Unable to open file.\n");return 1;}while (fscanf(fp, "%s", str) != EOF) {printf("%s ", str);}fclose(fp);return 0;}```在上面的代码中,我们首先定义了一个FILE类型指针fp、一个字符数组file_name和一个字符数组str。

然后,我们使用printf()函数提示用户输入要打开的文件名,并使用scanf()函数将其存储在file_name 数组中。

接下来,我们使用fopen()函数以只读模式打开该文件。

如果无法打开该文件,则会显示错误消息并退出程序。

然后,我们使用while循环和fscanf()函数从该文件中读取字符串并将其存储在str数组中。

当到达文件结尾时,fscanf()函数返回EOF (End Of File),此时循环结束。

最后,我们使用fclose()函数关闭该文件,并返回0以表示程序正常结束。

如何利用CC++逐行读取txt文件中的字符串(可以顺便实现文本文件的复制)

如何利用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语言从txt文件中逐行读入数据存到数组中的实现方法

C语言从txt文件中逐行读入数据存到数组中的实现方法

C语⾔从txt⽂件中逐⾏读⼊数据存到数组中的实现⽅法⾸先,要知道数据的存储格式是怎样的,65 2722 542691 514644 506588 524565 558608 580648 586696 572482 564第⼀⾏表⽰数字的个数和维数,所以要先读⼊这些信息:<span style="white-space:pre"> </span>FILE *fp = fopen("2D_Jesscia_keypos.txt", "r");if ( !fp ){fprintf( stderr, "! Error: faild to open keypos file \n" );return -1;}fscanf(fp, "%d %d%c", &in.numberofpoints, &dim, &ne);这样就得到了个数信息,这样⽅便动态的分配内存,接下来就可以逐⾏读⼊数据了:<span style="white-space:pre"> </span>in.pointlist = (REAL *) malloc( in.numberofpoints * 2 * sizeof(REAL) );char buf[1024];char pt1, pt2;for (i = 0; i < in.numberofpoints; i++){if (!feof(fp)){if (fgets(buf, 1024, fp) == NULL)break;sscanf(buf, "%s %s\n", &pt1, &pt2);in.pointlist[2 * i] = atoi(&pt1);in.pointlist[2 * i + 1] = atoi(&pt2);}}注意,是现将每⼀⾏读⼊buf中,这是字符串类型的,然后再利⽤sscanf将⾥⾯的内容读给pt1和pt2,再利⽤atoi函数得到数据类型的值。

c语言从txt文件中逐行读入数据存到数组中的实现方法

c语言从txt文件中逐行读入数据存到数组中的实现方法

在C语言中,可以使用标准库函数fgets()从文本文件中逐行读取数据,并将其存储到数组中。

下面是一个简单的示例代码,演示了如何实现这个过程:
在这个示例中,我们首先定义了一个常量MAX_LINE_LENGTH,用于指定每行数据的最大长度。

然后,我们定义了一个字符数组line,用于存储每行读取的数据。

我们还定义了一个指针数组data,用于存储每行数据的指针。

在读取数据时,我们使用malloc()函数为每行数据分配内存,并使用strcpy()函数将数据复制到数组中。

最后,我们遍历数组并输出其中的数据,并使用free()函数释放内存。

C#实现读写文本文件中的数据

C#实现读写文本文件中的数据

C#实现读写⽂本⽂件中的数据【1】⾸先我们定义⼀段假数据,这⾥以⼀个string为例字 static void Main(string[] args){string data = "我的数据要开始存⼊⽂件了,我好开⼼啊!覆盖了吗?好像覆盖了,真的覆盖了";}【2】接着我们将这个数据写⼊.txt⽂件代码如下:/// <summary>/// 保存数据data到⽂件的处理过程;/// </summary>/// <param name="data"></param>public static String SavaProcess(string data) {System.DateTime currentTime = System.DateTime.Now;//获取当前⽇期的前⼀天转换成ToFileTimestring strYMD = currentTime.AddDays(-1).ToString("yyyyMMdd");//按照⽇期建⽴⼀个⽂件名string FileName = "MyFileSend" + strYMD + ".txt";//设置⽬录string CurDir = System.AppDomain.CurrentDomain.BaseDirectory + @"SaveDir";//判断路径是否存在if(!System.IO.Directory.Exists(CurDir)){System.IO.Directory.CreateDirectory(CurDir);}//不存在就创建String FilePath = CurDir + FileName;//⽂件覆盖⽅式添加内容System.IO.StreamWriter file = new System.IO.StreamWriter(FilePath,false);//保存数据到⽂件file.Write(data);//关闭⽂件file.Close();//释放对象file.Dispose();return FilePath;}结果是返回⼀个⽂件路径,根据具体场合可返回,也可不返回;我们来测试⼀下⽂件是否⽣成成功,我们在Main函数中调⽤这个⽅法,代码如下: static void Main(string[] args){string data = "我的数据要开始存⼊⽂件了,我好开⼼啊!覆盖了吗?好像覆盖了,真的覆盖了";String filePath = SavaProcess(data); Console.WriteLine(filePath);}运⾏结果如下:很显然,在相关⽬录下,⽣成了想对应的⽂件;我们在看看cmd中打印出了如下路径: D:\VSProject\SavaProcessToFile\SavaProcessToFile\bin\Debug\SaveDirMyFileSend20170628.txt⽣成的这个路径对我们接下来的⼯作很重要,读取⽂本数据的时候需要⽤到;【3】读取.txt⽂件数据我们再定义⼀个读取数据的⽅法:/// <summary>/// 获取⽂件中的数据/// </summary>/// <param name="args"></param>public static string fileToString( String filePath ){string strData = "";try{string line;// 创建⼀个 StreamReader 的实例来读取⽂件 ,using 语句也能关闭 StreamReaderusing (System.IO.StreamReader sr = new System.IO.StreamReader(filePath)){// 从⽂件读取并显⽰⾏,直到⽂件的末尾while ((line = sr.ReadLine()) != null){//Console.WriteLine(line);strData = line;}}}catch (Exception e){// 向⽤户显⽰出错消息Console.WriteLine("The file could not be read:");Console.WriteLine(e.Message);}return strData;}看见没?我们这边传⼊的参数就是⽣成⽂件的那个路径,注意,参数的类型是String表⽰⽂本的,⽽不是string表⽰字符串的,因为我再⽣成路径的时候就是⽤的String,所以这⾥对应起来;接下来,我们来测试⼀下,看我们有没有读取⽂件成功,看cmd中是否会出现我们最初写⼊的那个字符串?我们在Main函数中调⽤⽅法,代码如下: static void Main(string[] args){string data = "我的数据要开始存⼊⽂件了,我好开⼼啊!覆盖了吗?好像覆盖了,真的覆盖了";String filePath = SavaProcess(data);string strData = fileToString(filePath);Console.WriteLine(strData);}运⾏结果如下:结果出现了最开始存的那个字符串;【4】写⼊和读取过程完整代码using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace SavaProcessToFile{class Program{/// <summary>/// 保存数据data到⽂件的处理过程;/// </summary>/// <param name="data"></param>public static String SavaProcess(string data) {System.DateTime currentTime = System.DateTime.Now;//获取当前⽇期的前⼀天转换成ToFileTimestring strYMD = currentTime.AddDays(-1).ToString("yyyyMMdd");//按照⽇期建⽴⼀个⽂件名string FileName = "MyFileSend" + strYMD + ".txt";//设置⽬录string CurDir = System.AppDomain.CurrentDomain.BaseDirectory + @"SaveDir"; //判断路径是否存在if(!System.IO.Directory.Exists(CurDir)){System.IO.Directory.CreateDirectory(CurDir);}//不存在就创建String FilePath = CurDir + FileName;//⽂件覆盖⽅式添加内容System.IO.StreamWriter file = new System.IO.StreamWriter(FilePath,false);//保存数据到⽂件file.Write(data);//关闭⽂件file.Close();//释放对象file.Dispose();return FilePath;}/// <summary>/// 获取⽂件中的数据/// </summary>/// <param name="args"></param>public static string fileToString(String filePath){string strData = "";try{string line;// 创建⼀个 StreamReader 的实例来读取⽂件 ,using 语句也能关闭 StreamReader using (System.IO.StreamReader sr = new System.IO.StreamReader(filePath)) {// 从⽂件读取并显⽰⾏,直到⽂件的末尾while ((line = sr.ReadLine()) != null){//Console.WriteLine(line);strData = line;}}}catch (Exception e){// 向⽤户显⽰出错消息Console.WriteLine("The file could not be read:");Console.WriteLine(e.Message);}return strData;}static void Main(string[] args){string data = "我的数据要开始存⼊⽂件了,我好开⼼啊!覆盖了吗?好像覆盖了,真的覆盖了"; String filePath = SavaProcess(data);string strData = fileToString(filePath);Console.WriteLine(strData);}}}本⽂源于zhuxiaoge(),如有转载请标明出处,不甚感激!!!。

c++读取数据文件到数组的实例

c++读取数据文件到数组的实例

c++读取数据文件到数组的实例【最新版】目录1.C++读取数据文件到数组的方法2.实例:读取整数数组并存储到数组中3.实例:读取浮点数数组并存储到数组中正文C++提供了多种方法来读取数据文件并将其存储到数组中。

这里我们将介绍两种常见的方法:使用 ifstream 类和 fstream 类。

首先,我们需要包含相应的头文件:```cpp#include <iostream>#include <fstream>```1.读取整数数组并存储到数组中:```cppint main() {int n;ifstream fin("data.txt");if (!fin.is_open()) {cout << "Error: cannot open file!" << endl;return 1;fin >> n;int arr[n];for (int i = 0; i < n; ++i) {fin >> arr[i];}fin.close();for (int i = 0; i < n; ++i) {cout << arr[i] << " ";}cout << endl;return 0;}```2.读取浮点数数组并存储到数组中:```cppint main() {int n;ifstream fin("data.txt");if (!fin.is_open()) {cout << "Error: cannot open file!" << endl; return 1;fin >> n;float arr[n];for (int i = 0; i < n; ++i) {fin >> arr[i];}fin.close();for (int i = 0; i < n; ++i) {cout << arr[i] << " ";}cout << endl;return 0;}```在这两个实例中,我们首先打开名为"data.txt"的文件,并读取其中的整数或浮点数数量。

(完整版)C语言统计文件中的字符数、单词数以及总行数

(完整版)C语言统计文件中的字符数、单词数以及总行数

C语言统计文件中的字符数、单词数以及总行数统计文件的字符数、单词数以及总行数,包括:每行的字符数和单词数文件的总字符数、总单词数以及总行数注意:空白字符(空格和tab缩进)不计入字符总数;单词以空格为分隔;不考虑一个单词在两行的情况;限制每行的字符数不能超过1000。

代码如下#include <stdio.h>#include <string.h>int *getCharNum(char *filename, int *totalNum);int main(){char filename[30];// totalNum[0]: 总行数totalNum[1]: 总字符数totalNum[2]: 总单词数int totalNum[3] = {0, 0, 0};printf("Input file name: ");scanf("%s", filename);if(getCharNum(filename, totalNum)){printf("Total: %d lines, %d words, %d chars\n", totalNum[0], totalNum[2], totalNum[1]);}else{printf("Error!\n");}return 0;}/*** 统计文件的字符数、单词数、行数** @param filename 文件名* @param totalNum 文件统计数据** @return 成功返回统计数据,否则返回NULL**/int *getCharNum(char *filename, int *totalNum){FILE *fp; // 指向文件的指针char buffer[1003]; //缓冲区,存储读取到的每行的内容int bufferLen; // 缓冲区中实际存储的内容的长度int i; // 当前读到缓冲区的第i个字符char c; // 读取到的字符int isLastBlank = 0; // 上个字符是否是空格int charNum = 0; // 当前行的字符数int wordNum = 0; // 当前行的单词数if( (fp=fopen(filename, "rb")) == NULL ){perror(filename);return NULL;}printf("line words chars\n");// 每次读取一行数据,保存到buffer,每行最多只能有1000个字符while(fgets(buffer, 1003, fp) != NULL){bufferLen = strlen(buffer);// 遍历缓冲区的内容for(i=0; i<bufferLen; i++){c = buffer[i];if( c==' ' || c=='\t'){ // 遇到空格!isLastBlank && wordNum++; // 如果上个字符不是空格,那么单词数加1isLastBlank = 1;}else if(c!='\n'&&c!='\r'){ // 忽略换行符charNum++; // 如果既不是换行符也不是空格,字符数加1isLastBlank = 0;}}!isLastBlank && wordNum++; // 如果最后一个字符不是空格,那么单词数加1isLastBlank = 1; // 每次换行重置为1// 一行结束,计算总字符数、总单词数、总行数totalNum[0]++; // 总行数totalNum[1] += charNum; // 总字符数totalNum[2] += wordNum; // 总单词数printf("%-7d%-7d%d\n", totalNum[0], wordNum, charNum);// 置零,重新统计下一行charNum = 0;wordNum = 0;}return totalNum;}在D盘下创建文件demo.txt,并输入如下的内容:运行程序,输出结果为:上面的程序,每次从文件中读取一行,放到缓冲区buffer,然后遍历缓冲区,统计当前行的字符和单词数。

C#读写txt文件的2种方法

C#读写txt文件的2种方法

C#读写txt⽂件的2种⽅法本⽂实例为⼤家分享了C#读取与写⼊txt⽂本⽂档数据的具体代码,供⼤家参考,具体内容如下1.添加命名空间 System.IO; System.Text;2.⽂件的读取(1).使⽤FileStream类进⾏⽂件的读取,并将它转换成char数组,然后输出。

byte[] byData = new byte[100];char[] charData = new char[1000];public void Read(){try{FileStream file = new FileStream("E:\\test.txt", FileMode.Open);file.Seek(0, SeekOrigin.Begin);file.Read(byData, 0, 100);//byData传进来的字节数组,⽤以接受FileStream对象中的数据,第2个参数是字节数组中开始写⼊数据的位置,它通常是0,表⽰从数组的开端⽂件中向数组写数据,最后⼀个参数规定从⽂件读多少字符. Decoder d = Encoding.Default.GetDecoder();d.GetChars(byData, 0, byData.Length, charData, 0);Console.WriteLine(charData);file.Close();}catch (IOException e){Console.WriteLine(e.ToString());}}(2).使⽤StreamReader读取⽂件,然后⼀⾏⼀⾏的输出。

public void Read(string path){StreamReader sr = new StreamReader(path,Encoding.Default);String line;while ((line = sr.ReadLine()) != null){Console.WriteLine(line.ToString());}}3.⽂件的写⼊(1).使⽤FileStream类创建⽂件,然后将数据写⼊到⽂件⾥。

简单C语言文件操作,读入一个文件内所有字符串,写出一个文件内的所有字符串

简单C语言文件操作,读入一个文件内所有字符串,写出一个文件内的所有字符串

简单C语言文件操作,读入一个文件内所有字符串,写出一个文件内的所有字符串读取数值数据成功了!!第二版读取字符串也能成功,如下:文件的读写操作全了,#include "stdio.h"#include "stdlib.h"//#include "file.h"void readexcel(char (*ch1)[80],char (*ch2)[80],char (*ch3)[80], char (*ch4)[80],char (*ch5)[80],char (*ch6)[80],char (*ch7)[80],int * num ){FILE *fp;int i=0;// int a,b,c,d,e,f,g;if((fp=fopen("10-1-input.txt","r"))==NULL){printf("文件不能打开\n");exit(1);}while(!feof(fp)){fscanf(fp,"%s %s %s %s %s %s %s",ch1[i],ch2[i],ch3[i],ch4[i],c h5[i],ch6[i],ch7[i]); // fscanf(fp,"%d%d%d%d%d%d%d",&a,&b,&c,&d,&e,&f,&g);// printf("%d %d %d %d %d %d %d\n",a,b,c,d,e,f,g);i++;// printf("%d\n",i);//}*num=i;printf("有效课程每两节算一次,其数量%d\n",i);for(i=0;i<*num;i++)printf("%s %s %s %s %s %s %s\n",ch1[i],ch2[i],ch3[i],ch4[i],c h5[i],ch6[i],ch7[i]);fclose(fp);}void writeexcel(char (*ch1)[80],char (*ch2)[80],char (*ch3)[80], char (*ch4)[80],char (*ch5)[80],char (*ch6)[80],char (*ch7)[80],int * num ){FILE *fp;int i=0;if((fp=fopen("10-1-output.txt","w"))==NULL){printf("文件不能打开\n");exit(1);}for(i=0;i<*num;i++){fprintf(fp,"%s %s %s %s %s %s %s\n",ch1[i],ch2[i],ch3[i],ch4[ i],ch5[i],ch6[i],ch7[i]);}for(i=0;i<*num;i++)printf("%s %s %s %s %s %s %s\n",ch1[i],ch2[i],ch3[i],ch4[i],c h5[i],ch6[i],ch7[i]);fclose(fp);}void main(){int i,j,num=0;// FILE *fp;char ch1[40][80]={0};char ch2[40][80]={0};char ch3[40][80]={0};char ch4[40][80]={0};char ch5[40][80]={0};char ch6[40][80]={0};char ch7[40][80]={0};readexcel(ch1,ch2,ch3,ch4,ch5,ch6,ch7,&num); writeexcel(ch1,ch2,ch3,ch4,ch5,ch6,ch7,&num); }。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

while(!out.eof()) {
out.getline(buffer,256,'\n'); //getline(char *, int, char)表示该行字符达到 256 个或遇到换 行就结束
cout<<buffer<<endl; } out.close(); cin.get(); //cin.get() 是用来读取回车键的,如 果没这一行,输出的结果一闪就消失了 }
}
二、读取文件 上面仅仅是将文件写入文件,并没有读取出来。 以下为读取的一种方法:将文件每行内容存储到字符串中,
再输出字符串
#include<iostream> #include<fstream> using namespace std; void main() {
char buffer[256]; fstream out; out.open("com.txt",ios::in); cout<<"com.txt"<<++ 简单读写文本文件、统计文件的行数、读取文件数据到数组
fstream 提供了三个类,用来实现 C++对文件的操作(文件的创建、 读、写)
ifstream : 从已有的文件读; ofstream: 向文件写内容; fstream : 打开文件供读写;
文件打开模式:
ios::in ios::out ios::app ios::binary ios::nocreate
using namespace std;
int main()
{ ofstream in; in.open("com.txt", ios::trunc); //ios::trunc
表示在打开文件前将文件清空,由于是写入,文件不存在则创建 int i; char a='a'; for(i=1;i<=26;i++) { if(i<10) { in<<"0"<<i<<"\t"<<a<<"\n"; a++; } else { in<<i<<"\t"<<a<<"\n"; a++; } } in.close();//关闭文件 return 0;
也就是说,eof 在读取完最后一个数据后,仍是 False,当再次 试图读一个数据时,由于发现没数据可读了,才知道到末尾了,此 时才修改标志,eof 变为 True。
最终找到了一个解决方法,现在把上面的代码改为如下: #include<iostream> #include<fstream> using namespace std; void main() {
这个方法读取的文件,所有字符都一起显示,不会分行。这里字母 z 显示两次,是正常的,因为在输出文件最后一个字母 z 之后,又 输出了一次(可以仔细考虑程序代码)。
C++之 EOF()
fstream 流的 eof()判断有点不合常理,按常理逻辑来说, 如果到了文件末尾的话,eof()应该返回真,但是,C++输入输出如 何知道是否到了末尾了呢?
fstream in; char c; in.open("com.txt",ios::in); while(in.peek() != EOF) {
in>>c; cout<<c; } in.close(); cin.get(); }
主要是把 eof()改为 peek() == EOF 来判别,其中 peek()是取文件 当前指针,EOF 是文件尾尾标符,它的值为-1,所以采用这种方法 就解决上面 eof()的问题了。这种方法也可以用在读写二进制文件 中。
在,不创建文件 ios::noreplace
在,创建该文件 ios::trunc
容 ios::ate
置移动到文件尾
读 写 从文件末尾开始写 二进制模式 打开一个文件时,如果文件不存
打开一个文件时,如果文件不存
打开一个文件,然后清空内
打开一个文件时,将位
文件指针位置在 C++中的用法:
ios::beg ios::end ios::cur
始方向移动 10 个字节
file.seekg(10,ios::beg); //让文件指针定位到离文件开头 10
个字节的位置
常用的错误的判断方法:
good()
如果文件打开成功
bad()
打开文件时发生错误
eof()
到达文件尾
实例:
一、写入文件
#include<iostream>
#include<fstream>
文件头 文件尾
当前位置
例子:
file.seekg(0,ios::beg); //让文件指针定位到文件开头
file.seekg(0,ios::end); //让文件指针定位到文件末尾
file.seekg(10,ios::cur); //让文件指针从当前位置向文件
末方向移动 10 个字节
file.seekg(-10,ios::cur); //让文件指针从当前位置向文件开
逐个字符的读取文件: #include<iostream> #include<fstream> using namespace std; void main() {
fstream in; char c; in.open("com.txt",ios::in); while(!in.eof()) {
in>>c; cout<<c; } in.close(); cin.get(); }
原来根据的是:如果 fin>>不能再读入数据了,猜发现到了 文件结尾,这时才给流设定文件结尾的标志,此后调用 eof()时, 才返回值真。
假设
find>>x; //此时文件刚好读完最后一个数据(将其保存在 x 中)
但是,这时 fin.eof()仍为假,因为 fin 流的标志 eofbit 是 False, fin 流此时认为文件还没有到末尾,只有当流再次读写时 fin>>x , 发现已无可读写数据,此时流才知道到达了结尾,这时才将标志 eofbit 修改为 True,此时流才知道文件到了末尾。
相关文档
最新文档