當前位置:首頁 » 編程語言 » 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"

打開一個二進制文件,文件必須存在,只允許讀