1, C读取txt文件问题
1.fopen的函数原型:FILE * fopen(const char * path,const char * mode);fopen函数的第一个参数是文件路径,第二个参数是打开方式,有以下几种方式:r 以只读方式打开文件,该文件必须存在。r+ 以可读写方式打开文件,该文件必须存在。rb+ 读写打开一个二进制文件,允许读数据。rw+ 读写打开一个文本文件,允许读和写。w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)wb 只写打开或新建一个二进制文件;只允许写数据。wb+ 读写打开或建立一个二进制文件,允许读和写。wt+ 读写打开或着建立一个文本文件;允许读写。at+ 读写打开一个文本文件,允许读或在文本末追加数据。ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno中。2.例程:#include#define F_PATH "d:\myfile\file.dat"char c;int main(){FILE*fp=NULL;//需要注意fp=fopen(F_PATH,"r");if(NULL==fp) return -1;//要返回错误代码while(fscanf(fp,"%c",&c)!=EOF) printf("%c",c); //从文本中读入并在控制台打印出来fclose(fp);fp=NULL;//需要指向空,否则会指向原打开文件地址 return 0;}
4, C语言如何读取txt文本里面的内容?
在C语言中,文件操作都是由库函数来完成的。要读取一个txt文件,首先要使用文件打开函数fopen()。fopen函数用来打开一个文件,其调用的一般形式为: 文件指针名=fopen(文件名,使用文件方式) 其中,“文件指针名”必须是被说明为FILE 类型的指针变量,“文件名”是被打开文件的文件名。 “使用文件方式”是指文件的类型和操作要求。“文件名”是字符串常量或字符串数组。其次,使用文件读写函数读取文件。在C语言中提供了多种文件读写的函数: ·字符读写函数 :fgetc和fputc·字符串读写函数:fgets和fputs·数据块读写函数:freed和fwrite·格式化读写函数:fscanf和fprinf最后,在文件读取结束要使用文件关闭函数fclose()关闭文件。下面以格式化读写函数fscanf和fprintf为例,实现对文件A.txt(各项信息以空格分割)的读取,并将它的信息以新的格式(用制表符分割各项信息)写入B.txt,实现对A.txt的处理。C语言源程序如下所示:#include <stdio.h>#include <stdlib.h>#include <assert.h>typedef struct student{char name[32];int no;char sex[16];float score;} stu;int main(int argc, char* argv[]){//打开文件 FILE * r=fopen("A.txt","r");assert(r!=NULL);FILE * w=fopen("B.txt","w");assert(w!=NULL);//读写文件 stu a[128];int i=0;while(fscanf(r,"%s%d%s%f",a[i].name,&a[i].no,a[i].sex,&a[i].score)!=EOF){printf("%s %d %s %g
",a[i].name,a[i].no,a[i].sex,a[i].score);//输出到显示器屏幕 fprintf(w,"%s %d %s %g
",a[i].name,a[i].no,a[i].sex,a[i].score);//输出到文件B.txt i++;} //关闭文件 fclose(r);fclose(w);system("pause");return 0;}编译运行后的结果如下:
//下面是写数据,将数字0~9写入到data.txt文件中 FILE *fpWrite=fopen("data.txt","w"); if(fpWrite==NULL) { return 0; } for(int i=0;i<10;i++) fprintf(fpWrite,"%d ",i); fclose(fpWrite); //下面是读数据,将读到的数据存到数组a[10]中,并且打印到控制台上 int a[10]={0}; FILE *fpRead=fopen("data.txt","r"); if(fpRead==NULL) { return 0; } for(int i=0;i<10;i++) { fscanf(fpRead,"%d ",&a[i]); printf("%d ",a[i]); } getchar();//等待
8, 怎样用C#读取TXT文件内容并修改
class Program{public static void Main(string[] args){string filePath = "c:\test.txt";List list = ReadInfoFromFile(filePath); //这个函数把文件的每一行读入listforeach (string[] strArray in list){if (strArray.Length < 7){continue;}for (int i = 0; i < strArray.Length; i++){if (i == 2 || i == 3){strArray[i] = ""; //把想要去掉的地方换成空串}}}WriteInfoTofile(filePath, list);}/// /// 这个函数把文件的每一行读入list/// /// /// private static List ReadInfoFromFile(string filePath){if (File.Exists(filePath)){List list = new List();// 打开文件时 一定要注意编码 也许你的那个文件并不是GBK编码的using (StreamReader sr = new StreamReader(filePath, Encoding.GetEncoding("GBK"))){while (!sr.EndOfStream) //读到结尾退出{string temp = sr.ReadLine();//将每一行拆分,分隔符就是char 数组中的字符string[] strArray = temp.Split(new char[] { " ", " ", "," }, StringSplitOptions.RemoveEmptyEntries);//将拆分好的string[] 存入listlist.Add(strArray);}}return list;}return null;}/// /// 这个函数把list中的每一行写入文件/// /// /// private static void WriteInfoTofile(string filePath, List list){// 打开文件时 一定要注意编码 也许你的那个文件并不是GBK编码的using (StreamWriter sw = new StreamWriter(filePath, false, Encoding.GetEncoding("GBK"))) {//一个string[] 是一行 ,一行中以tab键分隔foreach (string[] strArray in list){string line = string.Empty;foreach (string temp in strArray){if (!string.IsNullOrEmpty(temp)){line += temp;line += " ";}}sw.WriteLine(line);}}}}
相关概念
string
string是一个英语单词,可以用作名词和及物动词,可以翻译为绳子、带子,等等。
list
list是一个计算机专业术语,在编程语言中List 是类库中的一个类,可以简单视之为双向连结串行,以线性列的方式管理物件集合。list 的特色是在集合的任何位置增加或删除元素都很快,但是不支持随机存取。list 是类库提供的众多容器(container)之一,除此之外还有vector、set、map、…等等。list 以模板方式实现(即泛型),可以处理任意型别的变量,包括使用者自定义的资料型态