百度
360搜索
搜狗搜索

c语言如何从txt文件读取数据,怎样用C语言从txt文件中读入数据?详细介绍

本文目录一览: 从文本文件里读取数字,c语言如何实现

voidmain()
{
FILE*fin;
inta,b,c,d;
chars[20];
floatf1,f2,f3,f4;
fin=fopen("abc.txt","r");//打开
fscanf(fin,"%1d%1d%1d%1d",&a,&b,&c,&d);//按1位整型读前4个数
printf("a=%db=%dc=%dd=%d\n",a,b,c,d);
rewind(fin);//文件回绕到开始处
fscanf(fin,"%s",s);//按字符串读一串
printf("s=%s\n",s);
rewind(fin);//文件回绕到开始处
fscanf(fin,"%1f%1f%1f%1f",&f1,&f2,&f3,&f4);//按1位float型读前4个数
printf("%f%f%f%f\n",f1,f2,f3,f4);
flcose(fin);
}
abc.txt内容:
123456789
读到数组:
inty[20];
inti;
fin=fopen("abc.txt","r");
for(i=0;i<9;i++)fscanf(fin,"%1d",&y[i]);
扩展资料
C语言中文件的读取
fopen(打开文件)
相关函数open,fclose
表头文件#include

定义函数FILE*fopen(constchar*path,constchar*mode);

函数说明参数路径包含包含打开的文件路径和文件名,参数模式字符串则代表着流形态。

模式有以下几种形态类别:

r:预期文件,该文件必须存在。

r+:可读写的文件,该文件必须存在。

w:只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。

w+:可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。

a以附加的方式打开只写文件。若文件不存在,则建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。

c语言读取txt文件内容

用C语言从txt文件中读取数据,可以使用C标准库文件自带的文件接口函数进行操作。
一、打开文件:
FILE *fopen(const char *filename, const char *mode);
因为txt文件为文本文件, 所以打开时选择的mode应为"r"或者"rt"。
二、读取文件:
读取文件应根据文件内容的格式,以及程序要求,选择读取文件的函数。可以使用一种,也可以几种混用。 常用的文件读取函数如下:
1、fgetc, 从文件中读取一个字节并返回。 适用于逐个字节读取。
2、 fgets, 从文件中读取一行。适用于整行读取。
3、fscanf, 格式化读取文件, 在已经清楚文件存储格式下,可以直接用fscanf把文件数据读取到对应类型的变量中。
4、fread, 整块读取文件, 对于txt文件比较少用。
三、关闭文件:
读取结束后,应调用fclose函数关闭文件。

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

#include

#include

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\t%d\t%s\t%g\n",a[i].name,a[i].no,a[i].sex,a[i].score);//输出到显示器屏幕 fprintf(w,"%s\t%d\t%s\t%g\n",a[i].name,a[i].no,a[i].sex,a[i].score);//输出到文件B.txt i++; } //关闭文件 fclose(r); fclose(w); system("pause"); return 0;}编译运行后的结果如下:

1、打开电脑上要读取的文本文件。

2、打开文本后,点击文本左上角的【文件】按钮。

3、点击【另存为】。这样就会保存本来的这个文本文件,生成一个新的c文件。

4、点击【保存类型-对应的下拉按钮】。

5、选择【C source file(*.c)】。这个就是我们需要转换成C格式的后缀。

6、选择后,点击【保存】。保存后我们即可正常读取该文件了。

如果不加路径,比如一个main.c文件的代码是这样的:

if((fp=fopen("源程序.txt","r"))==NULL)

printf("源程序无法打开!\n");

如果你是在调试时候运行的, 那么"源程序.txt"就是在main.c同一个文件夹下.如果是直接运行程序,则"源程序.txt"是在main.exe同一个文件夹下.

注意,如果指定文件的绝对路径,比如 d:\源程序.txt ,在代码中应该写成这样: d:\\源程序.txt

还有疑问请追问..

亲 你得首先定义一个文件File 然后再判断是否open

C语言可以使用fopen()函数读取txt文本里。

示例:

#include

FILE *stream, *stream2;

void main( void )

{

int numclosed;

/* Open for read (will fail if file "data" does not exist) */

if( (stream = fopen( "data", "r" )) == NULL )

printf( "The file 'data' was not opened\n" );

else

printf( "The file 'data' was opened\n" );

/* Open for write */

if( (stream2 = fopen( "data2", "w+" )) == NULL )

printf( "The file 'data2' was not opened\n" );

else

printf( "The file 'data2' was opened\n" );

/* Close stream */

if(fclose( stream2 ))

printf( "The file 'data2' was not closed\n" );

/* All other files are closed: */

numclosed = _fcloseall( );

printf( "Number of files closed by _fcloseall: %u\n", numclosed );

}

扩展资料

使用fgetc函数

#include

阅读更多 >>>  linux通配符如何使用方法

#include

void main( void )

{

FILE *stream;

char buffer[81];

int i, ch;

/* Open file to read line from: */

if( (stream = fopen( "fgetc.c", "r" )) == NULL )

exit( 0 );

/* Read in first 80 characters and place them in "buffer": */

ch = fgetc( stream );

for( i=0; (i < 80 ) && ( feof( stream ) == 0 ); i++ )

{

buffer[i] = (char)ch;

ch = fgetc( stream );

}

/* Add null to end string */

buffer[i] = '\0';

printf( "%s\n", buffer );

fclose( stream );

}

怎样用C语言从txt文件中读入数据?

//其中的in.txt就是你要读取数据的文件,当然把它和程序放在同一目录
-------------------------------------
#include

int

main()

{

int

data;

FILE

*fp=fopen("in.txt","r");

if(!fp)

{

printf("can't

open

file\n");

return

-1;

}

while(!feof(fp))

{

fscanf(fp,"%d",&data);

printf("%4d",data);

}

printf("\n");

fclose(fp);

return

0;

}

#include

int

main()

{

FILE

*fp=NULL;

int

a[160];

int

i=0;

fp=fopen("data.txt","r");

if

(

!fp

)

{

printf("open

file

error\n");

return

-1;

}

while(

!feof(fp)

)

{

if

(

fscanf(

fp

,

"%d"

,&a[i]

)

!=1

)

break

;

i++;

fgetc(fp)

;//过滤掉分隔符

}

fclose(fp);

//以下倒序输出数据

printf("i=%d\n"

,

i

);

while(

--i

>=

0

)

{

printf("%d,"

,

a[i]

);

if

(

i

%10

==

0

)

printf("\n")

;

}

return

0;

}

你这是ascii格式的文件,最适合用fscanf来读,例如:

fscanf(fp,

"%s

%s

%d

%f",stu[i].stu_num,stu[i].name,&stu[i].age,&stu[i].score);

fread适用于读定长记录,你这样用当然要出错。

唉,我这只是举例说明,看来你对c还要深入了解。凡是你希望将变量作为参数传递给某函数,并希望在该函数内部改变变量的值,你都需要传递变量的地址,即使用&符号。你在自己的fread里面不是也使用了&stu[i]吗?但是由于字符数组自身已经是地址,所以stu[i].stu_num之类的东西就不要再加&了,否则反而出错。

我并没有你的数据文件,仅从你的帖子上看,你在fscanf的格式字符串最后再加一个回车字符,应该能跳过行尾。建议你再试试

fscanf(fp,

"%s

%s

%d

%f\n",stu[i].stu_num,stu[i].name,&stu[i].age,&stu[i].score);

这要看你的代码是什么样的。

贴出我的验证代码你看看有什么不同。

有一点要注意如果你用的是TC之类的编译器,它是DOS下工作的不支持8个字符以上的长文件名,所以要用短名如:stud_r~1.txt

#include "stdio.h"

void main()

{

FILE *pf;

char str[100];

int i;

for(i=0;i<100;i++) str[i]=0;

pf=fopen("C:\\record.txt","r");

fread(str,100,100,pf);

fclose(pf);

printf("\n%s",str);

}

看了你的代码,有几处不妥修正如下:

#include

struct student

{

char stu_num[5];

char name[10];

int age;

int score;

}stu[9];

print_rec(struct student *stud); /*你的访问方法行不通,要这样*/

main()

{

i=0;

FILE *fp;

fp=fopen("C:\\stud_r~1.txt","r");/*这里一定不能放在if里面,这个赋值返回是恒为真的。*/

if(fp==NULL)

{printf("Cannot open the file\n");exit(0);}

for(i=0;i<9;i++)

fread(&stu[i],sizeof(struct student),sizeof(struct student),fp);/*第三个参数是读取的字节数所以不能是1*/

print_rec(stu);

fclose(fp);/*事情做完记得收拾工具*/

getch();

}

print_rec(struct student *stud)

{

int j;

for(j=0;j<9;j++)

printf("%7s%10s%4d%6f\n",stud[j].stu_num,stud[j].name,stud[j].age,stud[j].score);

}

"#include

#define

MAX_LINES

2124

int

main()

{

FILE

*in,

*out;

int

lines

=

0;

int

X[MAX_LINES],

Y[MAX_LINES];

int

i;

float

t

=

1.2F;

int

P[]

=

{1,

2,

3,

4,

5};

int

d[]

=

{4,

5,

6};

in

=

fopen("C.txt",

"r");

if(!in)

return

1;

while(fscanf(in,

"%d%d",

X+lines,

Y+lines)

==

2){

//printf("%d

%d\n",

X[lines],

Y[lines]);

lines

++;

if(lines

>=

MAX_LINES)

break;

}

fclose(in);

out

=

fopen("output.txt",

"w");

if(!out)

return

1;

fprintf(out,

"%f\n",

t);

for(i

=

0;

i

<

sizeof(P)/sizeof(P[0]);

i++)

fprintf(out,

"%d\n",

P[i]);

for(i

=

0;

i

<

sizeof(d)/sizeof(d[0]);

i++)

fprintf(out,

"%d\n",

d[i]);

fclose(out);

return

0;

}"

1 以fopen打开文件,使用"r"方式。

2 通过fscanf,按照文件中的数据格式,读入数据。

3 关闭文件并使用数据。

如文件in.txt中存在三个以空格分隔的数据,依次为整型,字符串,以及浮点型,则读取数据的代码可以写作:

int main(){ FILE *fp; int a; char s[100]; float f; fp = fopen("in.txt", "r"); if(fp == NULL) return -1;//打开文件失败,结束程序。 fscanf(fp,"%d%s%f",&a,s,&f); fclose(fp); printf("read value: %d, %s, %f", a,s,f);}

阅读更多 >>>  linux命令与shell编程

C语言如何实现对txt文件的读取和写入

写入文件:
//---------------------------------------------------------------------------
#include

int

main(void)

{

char

name[80],pas[80];

FILE

*fp=fopen("user.txt","w");/*以写模式("w")打开文件user.txt,如果不存在,会自动创建*/

gets(name);

gets(pas);

/*输入名称和密码*/

fputs(name,fp);

fputs(pas,fp);/*将名称和密码以字符串形式写入文件*/

fclose(fp);/*关闭文件*/

return

0;

}

//---------------------------------------------------------------------------

从文件读取:

//---------------------------------------------------------------------------

#include

int

main(void)

{

char

name[80],pas[80];

FILE

*fp=fopen("user.txt","r");/*以读模式("r")打开文件user.txt*/

fscanf(fp,"%s",name);

fscanf(fp,"%s",pas);/*从文件读取名称和密码字符串*/

printf("%s\n%s",name,pas);

fclose(fp);

/*关闭文件*/

return

0;

}

//---------------------------------------------------------------------------

使用fopen的r方式可以实现读取,用w+方式可以实现写入。

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,"w"); //创建文件

if(NULL==fp) return -1;//要返回错误代码

while(scanf("%c",&c)!=EOF) fprintf(fp,"%c",c); //从控制台中读入并在文本输出

fclose(fp);

fp=NULL;//需要指向空,否则会指向原打开文件地址

return 0;

}

C语言如何实现对txt文件的读取和写入

参考代码:
#include

int main()

{

//下面是写数据,将数字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();//等待

return 1;

}

其他运算符:

1、逗号运算符

用于把若干表达式组合成一个表达式(,)。

2、指针运算符

用于取内容(*)和取地址(&)二种运算。

3、求字节数运算符

用于计算数据类型所占的字节数(sizeof)。

4、特殊运算符

有括号(),下标[],成员(→,.)等几种。

使用fopen的r方式可以实现读取,用w+方式可以实现写入。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,"w"); //创建文件 if(NULL==fp) return -1;//要返回错误代码 while(scanf("%c",&c)!=EOF) fprintf(fp,"%c",c); //从控制台中读入并在文本输出 fclose(fp); fp=NULL;//需要指向空,否则会指向原打开文件地址 return 0;}

1、使用VS新建空工程,直接点击确定,如下所示。

2、新建c文件,用于C语言编译器,输入main.c文件,如下所示。

3、参考代码:

#include

int main()

{

//下面是写数据,将数字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();//等待

return 1;

}

4、编译完成后,运行exe程序,执行后显示console程序。

在c语言中,如何读取一个txt文件中的信息

纯C语言,不是C++?
这样的话,任何一本C语言课本都会讲到文件的操作吧~
FILE* fo;
fo=fopen("文件名","r");
然后建立一个新文件供写入
FILE* fn;
fn=fopen("文件名","w+");
然后用fgetc读,读到的东西存到数组里,每遇到\n就开一个新数组,直到读到EOF
读出来的东西再一个一个fputc回新文件里就行了。
最后
fclose(fo);
fclose(fn);
补充:
fo是FILE型指针,可能指向文件的任何位置,用fseek等操作
fgetc读出来是一个char,肯定要放到一个char型数组对吧,你可以用几万行的2维数组,也可以用几万个1维数组
遇到行结束了,要不就转向二维数组的下一行,要不就新建一个1维数组,这个你会吧:
int* a;
a=(int*)malloc(10000*sizeof(int));
建议用2维数组,简单一点
几万行的文件一点都不大,可以说是比较小的:),放心。
还有,建议你多去看看MSDN之类的或者C教材中对文件操作例程的信息。
  一般来说在C语言中读取txt文件的信息有两种方法,一种是使用C语言标准文件I/O中的fopen()、fread()等等函数,一种是调用操作系统中的API函数,比如Windows上的ReadFile()、OpenFile()等等,现在操作系统一般都具备内存文件映射功能,对于大的txt文件,一般都使用这种方式操作。下面是一个使用C语言标准文件I/O操作文件的例子。
#include

FILE*stream;void main(void){ long l; float fp; char s[81]; char c; stream=fopen("fscanf.out","w+"); if(stream==NULL) printf("Thefilefscanf.outwasnotopened\n"); else { fprintf(stream,"%s%ld%f%c","hello world", 65000,3.14159,'x'); /*Setpointertobeginningoffile:*/ fseek(stream,0L,SEEK_SET); /*Readdatabackfromfile:*/ fscanf(stream,"%s",s); fscanf(stream,"%ld",&l); fscanf(stream,"%f",&fp); fscanf(stream,"%c",&c); /*Outputdataread:*/ printf("%s\n",s); printf("%ld\n",l); printf("%f\n",fp); printf("%c\n",c); fclose(stream); }}  

阅读更多 >>>  linux的命令缩写

网站数据信息

"c语言如何从txt文件读取数据,怎样用C语言从txt文件中读入数据?"浏览人数已经达到20次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:c语言如何从txt文件读取数据,怎样用C语言从txt文件中读入数据?的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!