c語言讀取文件內容-九游会j9娱乐平台
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;
}