當前位置:ag真人国际官网-ag旗舰厅官方网站 » 編程語言 » c語言讀取文件內容

c語言讀取文件內容-ag真人国际官网

發布時間: 2022-01-08 00:13:21

1. c語言 怎麼從文件中讀取指定內容

哥哥我想出的辦法是這樣的:

因為兄弟文件格式是一行一行的, 且每行開頭是一個關鍵字,然後後面是相應數據, 所以哥哥是這么想的, 比如要讀"ab2345"這個關鍵字對應行的內容, 那首先用變數或者宏定義定義下來, 然後從文件開頭開始, 一個字元一個字元的掃描, 對每一行的開始的6個字元組成的關鍵字讀出來跟"ab2345"這個關鍵字比較, 判斷是否是想要讀取的, 如果是, 那麼通過ftell, fseek 兩個函數分別得出當前指針的位置和適當移動指針的位置, 最後讀取相應內容輸出來!

詳細代碼如下:

#include
#include
#include

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

2. c語言如何讀取文件並輸出

c語言讀取文件並輸出的代碼如下:

#include

inta;

charb,c[100];

intmain(){

file*fp1=fopen("input.txt","r");//打開輸入文件

file*fp2=fopen("output.txt","w");//打開輸出文件

if(fp1==null||fp2==null){//若打開文件失敗則退出

puts("不能打開文件!");

return0;

fscanf(fp1,"%d",&a);//從輸入文件讀取一個整數

b=fgetc(fp1);//從輸入文件讀取一個字元

fgets(c,100,fp1);//從輸入文件讀取一行字元串

printf("%ld",ftell(fp1));//輸出fp1指針當前位置相對於文件首的偏移位元組數

fputs(c,fp2);//向輸出文件寫入一行字元串

fputc(b,fp2);//向輸出文件寫入一個字元

fprintf(fp2,"%d",a);//向輸出文件寫入一個整數

fclose(fp1);//關閉輸入文件

fclose(fp2);//關閉輸出文件,相當於保存

return0;

c語言中使用fopen()函數實現文件的讀取,使用fgetc()函數讀取文件中的字元,使用fclose()實現文件的關閉,注意:打開文件流必須要關閉文件流,不然會持續佔用計算機內存資源。



(2)c語言讀取文件內容擴展閱讀:

fopen函數

c語言中fopen函數可以兩個參數,fopen(const char *filename, const char *mode)。

第一個參數filename:這是 c 字元串,包含了要打開的文件名稱。

第二個參數mode:這是 c 字元串,包含了文件訪問模式。

3. c語言文件的文本怎麼讀取

根據你給的文件保存的數據的格式,我猜測每一行是一個學生的信息,格式如下:

序號 姓名 成績1 成績2 成績3 ...

知道了題意和題目要求,那麼一切將會變得簡單起來,請看代碼。

#include

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

以下是運行結果:

這個程序僅僅是針對你的題目要求來的,文件存放的數據格式不能更改,否則會出錯。每一行必須以回車鍵結束,最後一行的最後一個字元之後什麼也不能有。我盡量以你看得懂的方法來寫,關鍵部分都帶有注釋,有問題不要追問了,自己多思考思考,實在解決不來還是很歡迎可以追問的哦,哈哈哈!!!

4. c語言讀取文件內容的程序

感覺你貼出來的代碼跟題目要求差距有點大啊

代碼(ps:這里輸入的文件名就是一個相對路徑,所以給定的測試文本要放在本程序同目錄下):

#include
#include
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);
}

測試文本內容:

5. c語言如何讀取txt文本裡面的內容

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

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

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

printf( "%s ", buffer );

fclose( stream );

}

6. c語言如何讀取文件

c語言讀取文件的具體步驟如下:

我們需要准備的材料分別是:電腦、c語言。

1、首先我們打開需要讀取的文件,點擊打開左上角文件中的「另存為」。

7. c語言讀取txt文件內容

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

8. c語言怎樣將文本文件中的內容讀取列印

可以參考下面的代碼:

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

}

(8)c語言讀取文件內容擴展閱讀:

fopen函數是打開一個文件,其調用的一般形式為:

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

「文件指針名」必須是被聲明為file 類型的指針變數;

「文件名」是被打開文件的文件名;

「使用文件方式」是指文件的類型和操作要求;

「文件名」是c風格字元串。

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

"r" = "rt"

打開一個文本文件,文件必須存在,只允許讀

"rb"

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

9. c讀取文件內容

c讀取文件內容參考代碼如下:

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

10. c語言讀取文本文件

1、c語言標准庫提供了一系列文件操作函數。文件操作函數一般以f 單詞的形式來命名(f是file的簡寫),其聲明位於stdio.h頭文件當中。例如:fopen、fclose函數用於文件打開與關閉;fscanf、fgets函數用於文件讀取;fprintf、fputs函數用於文件寫入;ftell、fseek函數用於文件操作位置的獲取與設置。
2、常式:

#include
inta;
charb,c[100];
intmain(){
file*fp1=fopen("input.txt","r");//打開輸入文件
file*fp2=fopen("output.txt","w");//打開輸出文件
if(fp1==null||fp2==null){//若打開文件失敗則退出
puts("不能打開文件!");
rturn0;
}
fscanf(fp1,"%d",&a);//從輸入文件讀取一個整數
b=fgetc(fp1);//從輸入文件讀取一個字元
fgets(c,100,fp1);//從輸入文件讀取一行字元串

printf("%ld",ftell(fp1));//輸出fp1指針當前位置相對於文件首的偏移位元組數

fputs(c,fp2);//向輸出文件寫入一行字元串
fputc(b,fp2);//向輸出文件寫入一個字元
fprintf(fp2,"%d",a);//向輸出文件寫入一個整數

fclose(fp1);//關閉輸入文件
fclose(fp2);//關閉輸出文件,相當於保存
return0;
}
熱點內容
仙境傳說手游腳本 發布:2024-07-17 16:09:24 瀏覽:690
matlab命令窗口和新建腳本 發布:2024-07-17 15:51:26 瀏覽:374
建ftp文件夾 發布:2024-07-17 15:51:26 瀏覽:954
魔獸撿物腳本 發布:2024-07-17 15:27:56 瀏覽:129
開發ip伺服器 發布:2024-07-17 15:24:42 瀏覽:387
安卓系統視頻製作哪個好用 發布:2024-07-17 15:10:47 瀏覽:210
androidapk結構 發布:2024-07-17 15:10:43 瀏覽:945
c語言指針的例子 發布:2024-07-17 15:08:01 瀏覽:768
linuxzcat 發布:2024-07-17 15:02:09 瀏覽:901
賓士編程嗎 發布:2024-07-17 14:57:08 瀏覽:853
网站地图