首页 >  知识中心 >  新闻详情

c++读取txt文件 C读取txt文件问题

来源:朵拉利品网  |  2019-07-24 20:21:34

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); //这个函数把文件的每一行读入list
foreach (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[] 存入list
list.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 以模板方式实现(即泛型),可以处理任意型别的变量,包括使用者自定义的资料型态

 
相关新闻
c++读取txt文件 C读取txt文件问题 07-24
门禁卡uid卡还是cuid卡 想做个门禁卡不知是IC卡好还是ID卡好求解释 08-11
长期喝柠檬水的坏处 每天喝柠檬水有什么好处和坏处? 08-19
蓝牙音箱怎么存歌 蓝牙音箱怎么播放内存卡的歌? 08-28
cfc是什么意思 CFC是什么意思? 10-19
cnc操作工 cnc操作员是什么意思 11-23
蓝硕移动硬盘不识别 移动硬盘无法识别读取怎么办?(急) 12-10
coc认证是什么 COC是什么认证 哪里可以办 01-07
coc认证是什么意思 COC认证有什么用? 01-07
coc认证费用一般有多少 COC认证有什么用? 01-07
相关产品
CNC机加工CNC五金加工CNC精密机械零件CNC零件加工五金四轴加工 05-10
厂家直销 9V0.5a电子秤电源适配器 过CCC CQC认证 质保2年 05-13
大排量摩托车化油器200cc-400cc 05-20
五羊本田250摩托车化油器200CC250CC275CC 05-20
供应手机照相头治具 06-20
梦翔 适用于兄弟LC400 LC1220 LC1240 LC12 LC40 LC75墨盒430墨盒 06-22
9SiCr 9SiCr 9SiCr 9SiCr 9SiCr 07-02
9SiCr 9SiCr 9SiCr 9SiCr 9SiCr 07-02
龙事达品牌CCCF消防新规XBD-GJ地埋式消防泵 CCCF轴流式消防泵 07-17
供应 ABS 基础创新塑料sabic CYCOLAC EXCC0010 07-22

大家都在看