当前位置:首页 » 编程语言 » c语言读取文件内容
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言读取文件内容

发布时间: 2022-02-08 09:23:16

c语言中读取txt文件内容

如果下面的代码是你的话,链表的长度返回1是正常的,因为你的链表项数据只有一个字符呀!

❷ c语言 怎么从文件中读取指定内容

哥哥我想出的办法是这样的:

因为兄弟文件格式是一行一行的, 且每行开头是一个关键字,然后后面是相应数据, 所以哥哥是这么想的, 比如要读"AB2345"这个关键字对应行的内容, 那首先用变量或者宏定义定义下来, 然后从文件开头开始, 一个字符一个字符的扫描, 对每一行的开始的6个字符组成的关键字读出来跟"AB2345"这个关键字比较, 判断是否是想要读取的, 如果是, 那么通过ftell, fseek 两个函数分别得出当前指针的位置和适当移动指针的位置, 最后读取相应内容输出来!

详细代码如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define BUF_SIZE 1024
#define KEY "AB2345"
#define KEY_LEN 7

int main()
{
int ch = 0;
int first = 1;//开始时的标志,因为是一个字符一个字符的扫描
int flag = 0;//文件开头是不是所要读内容的标志
int count = 0;//遇到'\n'的个数
int pre_pos = 0, cur_pos = 0;//前一次和当前文件指针的位置
char buf[BUF_SIZE] = {0};
FILE *fp = NULL;

fp = fopen("test.txt", "r");
if (fp == NULL)
{
printf("Cann't open the file!\n");
exit(1);
}
else
{
while ((ch = fgetc(fp)) != EOF)
{
if (first)
{
//若要读取的内容在文件开头就有时
//移动指针到文件开头
fseek(fp, -1L, SEEK_CUR);
fgets(buf, KEY_LEN, fp);
if (strcmp(buf, KEY) == 0)
{
first = 0;
flag = 1;
continue;
}
else
{
first = 0;
}
}
if (ch == '\n')
{
count++;//遇到'\n'的个数
pre_pos = cur_pos;//上次遇到'\n'时文件指针的位置
cur_pos = ftell(fp);//当前遇到'\n'时文件指针的位置

//文件开头内容符合要求的就适当移动指针位置
//然后读取输出来
if (count == 1 && flag == 1)
{
fseek(fp, 0L, SEEK_SET);
memset(buf, 0, sizeof(buf));
fgets(buf, cur_pos - 1, fp);
printf("%s\n", buf);
}
//之后内容符合要求的就适当移动指针位置
//然后读取输出来
else
{
memset(buf, 0, sizeof(buf));
fgets(buf, KEY_LEN, fp);
if (strcmp(buf, KEY) == 0)
{
fseek(fp, (-1) * (KEY_LEN - 1), SEEK_CUR);
memset(buf, 0, sizeof(buf));
fgets(buf, cur_pos-1-pre_pos, fp);
printf("%s\n", buf);
}
}
}
}
}
fclose(fp);

return 0;
}

❸ 怎么用C语言读取 TXT文件中的字符串

1、首先我们打开电脑里的VS软件,使用VS新建空工程,直接点击确定。

❹ C语言读取txt文件内容

#include<stdio.h>
#include<stdlib.h>
intmain()
{
FILE*file;
char*data;
intfileSize;
//打开文件“D:a.txt”
file=fopen("D:\a.txt","r");
//获得文件大小
fseek(file,0,SEEK_END);
fileSize=ftell(file);
fseek(file,0,SEEK_SET);
//分配内存
data=(char*)malloc(fileSize+1);
//读取文件
fread(data,sizeof(char),fileSize,file);
data[fileSize]=0;
//输出内容(你想对内容干什么都可以了)
printf("%s",data);

return0;
}

❺ C语言如何读取txt文本里面的内容

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

示例:

#include <stdio.h>

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 " );

else

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

/* Open for write */

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

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

else

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

/* Close stream */

if(fclose( stream2 ))

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

/* All other files are closed: */

numclosed = _fcloseall( );

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

}

(5)c语言读取文件内容扩展阅读

使用fgetc函数

#include <stdio.h>

#include <stdlib.h>

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] = '';

printf( "%s ", buffer );

fclose( stream );

}

❻ C语言中读取txt文件内容

1通过fopen函数打开文本,例如FILE *fp=fopen("in.txt","r");//返回一个FILE类型的句柄

2然后就可以通过fcanf()函数对txt文本进行读取

3操作完文本之后用fclose()函数 关闭已经打开的文件。

#include<stdio.h>
intmain()
{
intdata;
FILE*fp=fopen("in.txt","r");
if(!fp)
{
printf("can'topenfile ");
return-1;
}
while(!feof(fp))
{
fscanf(fp,"%d",&data);
printf("%4d",data);
}
printf(" ");
fclose(fp);
return0;
}

❼ C读取文件内容

C读取文件内容参考代码如下:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#defineMAX_LINE1024
intmain()
{
charbuf[MAX_LINE];/*缓冲区*/
FILE*fp;/*文件指针*/
intlen;/*行字符个数*/
if((fp=fopen("test.txt","r"))==NULL)
{
perror("failtoread");
exit(1);
}
while(fgets(buf,MAX_LINE,fp)!=NULL)
{
len=strlen(buf);
buf[len-1]='';/*去掉换行符*/
printf("%s%d ",buf,len-1);
}
return0;
}

❽ C语言文件的文本怎么读取

根据你给的文件保存的数据的格式,我猜测每一行是一个学生的信息,格式如下:

序号 姓名 成绩1 成绩2 成绩3 ...

知道了题意和题目要求,那么一切将会变得简单起来,请看代码。

#include<stdio.h>

#defineREAD_FILE"data.txt"/*要读取的文件的名字*/
#defineWRITE_FILE"T_data.txt"/*要写入的文件的名字*/
#defineSTU_NUM10/*最大学生人数*/
#defineMAX_LEN50/*一行的最大字符数*/
/*
*获取总分函数
*/
intget_sum(charconst*msg){

intsum=0;
inttmp;
/*
*遍历一行字符
*/
while(*msg!=''){

/*
*以空格为一项成绩的分隔标志
*/
tmp=0;
while(*msg!=''&&*msg!=''){
/*
*char类型数字转int类型数字
*/
tmp=(tmp*10)+((*msg)-'0');
msg++;
}
/*
*求总和
*/
sum+=tmp;
if(*msg==''){

break;
}
msg++;
}
returnsum;
}

intmain(void){

FILE*rfp,*wfp;/*声明读取/写入文件指针*/
charstudent[STU_NUM][MAX_LEN];/*存放读取到的数据缓存数组*/
charch;
intsum[STU_NUM];/*成绩总和*/
inti=0;
intj=0;
intk=0;
rfp=fopen(READ_FILE,"r");/*打开数据文件*/
if(rfp==NULL){

perror(READ_FILE);
exit(1);
}
for(i=0;i<STU_NUM;i++){

sum[i]=0;
}
/*
*逐个字符读取文件的内容,
*直至遇到文件结束符为止。
*/
i=0;
while((ch=fgetc(rfp))!=EOF){
/*
*遇到换行符表示已经读取完一个学生的资料;
*否则继续将数据写入缓存数组中。
*/
if(ch==' '){

student[i][j]='';
j=0;
i+=1;
}else{

student[i][j++]=ch;
}
}
student[i][j]='';
wfp=fopen(WRITE_FILE,"w");
/*
*开始分析数据
*根据文件存放数据的格式,从下标为2的位置开始分析数据。
*当遇到空格时证明后面的数据是成绩,每一科成绩分数均以空格分开。
*printf是显示出来。
*fprintf是写入另一个文件。
*/
for(j=0;j<=i;j++){

k=2;
printf("%c%c",student[j][0],student[j][1]);
fprintf(wfp,"%c%c",student[j][0],student[j][1]);
while(student[j][k]!=''){

printf("%c",student[j][k]);
fprintf(wfp,"%c",student[j][k]);
k++;
}
printf("'ssumofscoresumis");
fprintf(wfp,"'ssumofscoresumis");
sum[j]=get_sum(&student[j][k]);
printf("%d ",sum[j]);
fprintf(wfp,"%d ",sum[j]);
}
/*
*记得关闭文件哦。
*/
fclose(rfp);
fclose(wfp);
return0;
}

以下是运行结果:

这个程序仅仅是针对你的题目要求来的,文件存放的数据格式不能更改,否则会出错。每一行必须以回车键结束,最后一行的最后一个字符之后什么也不能有。我尽量以你看得懂的方法来写,关键部分都带有注释,有问题不要追问了,自己多思考思考,实在解决不来还是很欢迎可以追问的哦,哈哈哈!!!

❾ C语言读取文件内容的程序

感觉你贴出来的代码跟题目要求差距有点大啊

代码(ps:这里输入的文件名就是一个相对路径,所以给定的测试文本要放在本程序同目录下):

#include<stdio.h>
#include<stdlib.h>
voidmain()
{
FILE*fp;
charfilename[30],temp[1024];
intcount,i,flag=1;
printf("请输入文件名:");
gets(filename);
if((fp=fopen(filename,"r"))==NULL)//文件不存在
{
printf("FileNameError ");
exit(0);
}
else//文件存在
{
printf("请选择行数:");
scanf("%d",&count);
for(i=1;i<=count;i++)
{
if(fgets(temp,1024,fp)==NULL)//不存在第count行
{
flag=0;
break;
}
}
if(flag==0)
printf("LineNoError ");
else
printf("第%d行是:%s",count,temp);//打印第count行
}
fclose(fp);
}

测试文本内容:

❿ C语言怎样将文本文件中的内容读取打印

可以参考下面的代码:

#include<stdio.h>

#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;

}

(10)c语言读取文件内容扩展阅读:

fopen函数是打开一个文件,其调用的一般形式为:

文件指针名=fopen(文件名,使用文件方式);

“文件指针名”必须是被声明为FILE 类型的指针变量;

“文件名”是被打开文件的文件名;

“使用文件方式”是指文件的类型和操作要求;

“文件名”是C风格字符串。

使用文件的方式共有12种,部分的意义如下:

"r" = "rt"

打开一个文本文件,文件必须存在,只允许读

"rb"

打开一个二进制文件,文件必须存在,只允许读