當前位置:首頁 » 編程語言 » c語言文件依次讀取
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言文件依次讀取

發布時間: 2022-08-22 07:31:41

c語言中由用戶給出一個文件夾,如何依次打開文件夾中的每個文件

if((dir=
opendir(command))
==
NULL)
{
printf
(
"%s:
can
not
open.",
__func__
);
return
-1;
}
else
{
while((s_dir=readdir(dir))!=NULL)
{
if(strncmp(s_dir->d_name,".",1)==0
||
strncmp(s_dir->d_name,"..",1)==0)
//linux系統的話會默認有一個.和..文件
{
continue;
}
sprintf(currpath,
"%s/%s/user",command,s_dir->d_name);
readValue
(
currpath,
buf,
sizeof(buf));

② c語言 讀寫文件時怎麼樣一次讀取幾行,然後再幾行幾行的往下讀取

用循環語句,一次讀幾行。
用雙重循環語句,就可以再幾行幾行地讀。
例如:
#include <stdio.h>
#include <stdlib.h>
FILE *fin;
main(){
char s[20][200];
int i,j;
fin=fopen("abc.txt","r"); // 打開文件
for (i=0;i<4;i++) fgets(s[i],200,fin); // 以字元串形式 讀4行
for (i=0;i<4;i++) printf("%s\n",s[i]); // 列印這4行
for (j=1;j<=4;j++) //循環4次,每次讀4行
for (i=0;i<4;i++) fgets(s[j*4+i],200,fin);
return 0;
}
如果不是字元串,而是數據,那麼根據文件里數據寫法,一行有多少個數,也可以通過循環實現。
如果更復雜:每行有數,有字元串,個數不定,同樣可以通過循環實現,只是讀時 要檢查測定是否遇到 '\n' 了,遇到 '\n'就是 一行。
寫文件也是一樣,可以循環,行結束就輸出一個 '\n'.

③ 標准C語言中如何一次讀取某文件中的多行數據

有很多種方式可以一次性讀取多行數據,具體如何使用,取決於文件內容格式。
一、以fscanf讀取。
fscanf讀取時,默認會到空白字元截止。所以如果文件中不存在其它空白字元,那麼可以以fscanf實現一次性讀取多行的效果,比如文件中存儲
1
2.3
name那麼要一次版性讀取這三行數權據,可以使用:
int a;
float b;
char c[20];
fscanf(fp, "%d%f%s",&a,&b,c);其中,fp為打開該文件的文件指針,
分別將三行數據讀取到三個變數a
b
c中。
二、以fread讀取。
fread可以一次性讀取若干個數據塊,所以如果要讀取的文件內容總長度已知,那麼可以通過fread一次性讀取多行。如
this is
for
my test
only.以上數據分4行,包括換行符在內共計25位元組。
此時可以使用如下代碼一次性讀取四行:
char buf[100];
fread(buf, 25, 1, fp);其中fp為打開該文件的文件指針。

④ C語言編程求助,怎麼從一個文本文件中依次讀取其中的每行,並做處理

如果定義二維數組,可以這樣做:

char *[100]; // 定義最多100行

char *tmp;
FILE *fp;
int index=0;
fp=fopen(file_name,"r");
while((tmp=fgets(fp))!=EOF){
//處理tmp值,切記tmp是沒有開辟空間,如果需要保存處理的結果需要定義開辟空間的變數

// do_()

[index] = (char *)malloc(100); //限制每行最多100個字元存儲空間
strcpy([index],tmp);
index++;
}

⑤ c語言逐行讀取文件

可以使用fgets函數。

1 函數名:

fgets

2 聲明:

char *fgets(char *buf, int bufsize, FILE *stream);

3 頭文件:

stdio.h

4 功能:

從文件結構體指針stream中讀取數據,每次讀取一行。讀取的數據保存在buf指向的字元數組中,每次最多讀取bufsize-1個字元(第bufsize個字元賦''),如果文件中的該行,不足bufsize個字元,則讀完該行就結束。如若該行(包括最後一個換行符)的字元數超過bufsize-1,則fgets只返回一個不完整的行,但是,緩沖區總是以NULL字元結尾,對fgets的下一次調用會繼續讀該行。函數成功將返回buf,失敗或讀到文件結尾返回NULL。因此我們不能直接通過fgets的返回值來判斷函數是否是出錯而終止的,應該藉助feof函數或者ferror函數來判斷。


5 參數:

*buf:字元型指針,指向用來存儲所得數據的地址。

bufsize:整型數據,指明存儲數據的大小。

*stream:文件結構體指針,將要讀取的文件流。


6 返回值:

成功,則返回第一個參數buf;

在讀字元時遇到end-of-file(文件結尾),則eof指示器被設置,如果還沒讀入任何字元就遇到這種情況,則buf保持原來的內容,返回NULL;

如果發生讀入錯誤,error指示器被設置,返回NULL,buf的值可能被改變。


7 示例代碼:

逐行讀取in.txt中的數據,並列印。每行不超過100個字元。

intmain()
{
FILE*fp;
charbuf[101];
fp=fopen("in.txt","r");//打開文件
while(fgets(buf,sizeof(buf),fp))//每次讀取一行數據,直到讀取失敗。
{
printf("%s ",buf);//列印該行。
}
fclose(fp);//關閉文件。

return0;
}

⑥ 從文本文件里讀取數字,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 ",a,b,c,d);

rewind(fin);//文件回繞到開始處

fscanf(fin,"%s",s);//按字元串讀一串

printf("s=%s ",s);

rewind(fin);//文件回繞到開始處

fscanf(fin,"%1f%1f%1f%1f",&f1,&f2,&f3,&f4);//按1位float型讀前4個數

printf("%f%f%f%f ",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]);

(6)c語言文件依次讀取擴展閱讀

C語言中文件的讀取

fopen(打開文件)

相關函數open,fclose

表頭文件#include<stdio.h>

定義函數FILE*fopen(constchar*path,constchar*mode);

函數說明參數路徑包含包含打開的文件路徑和文件名,參數模式字元串則代表著流形態。

模式有以下幾種形態類別:

r:預期文件,該文件必須存在。

r+:可讀寫的文件,該文件必須存在。

w:只寫文件,若文件存在則文件長度清為0,即該文件內容會消失。若文件不存在則建立該文件。

w+:可讀寫文件,若文件存在則文件長度清為零,即該文件內容會消失。若文件不存在則建立該文件。

a以附加的方式打開只寫文件。若文件不存在,則建立該文件,如果文件存在,寫入的數據會被加到文件尾,即文件原先的內容會被保留。

⑦ 關於C語言中文本文件的逐行讀取的實現

#include
<stdio.h>
int
ReadData(void)
{
unsigned
int
rc,
i,
get;
/*get為讀取一個位元組*/
FILE
*fp;
fp
=
fopen("helloworld.txt",
"r+");
if
(fp
==
NULL)
{
return
-1;
/*打開文件失敗返回-1*/
}
rc=0;
i=0;
while
((get
=
fgetc(fp))
!=
EOF)
{
if((char)get
==
'\n')
/*記錄換行符*/
{
rc
=
ftell(fp);
i++;
}
rc++;
}
return
i;
}
int
main()
{
int
row;
row
=
ReadData();
printf("Row
=
%d\n",
row);
/*列印文件行數*/
return
0;
}

⑧ C語言問題 怎樣從一個文件中逐個讀入字元(每次讀入一個)

charstr[1024];

inti=0;

while((str[i]=getchar())!=' ')

i++;

getchar();

(8)c語言文件依次讀取擴展閱讀

C語言讀取一個文件的字元:

#include<stdio.h>

intmain(void)

{

FILE*stream;

errno_terr;

//Openforread(willfailiffile"crt_fopen_s.c"doesnotexist)

err=fopen_s(&stream,"crt_fopen_s.c","r");

if(err==0)

printf("Thefile'crt_fopen_s.c'wasopened ");

else

printf("Thefile'crt_fopen_s.c'wasnotopened ");

}

⑨ 如何用C語言循環讀取文件內容

  1. 循環讀取一個文件的內容。

    這樣做沒有任何意義,不如把讀取的內容保持在變數當中,節省空間時間。如果非要反復讀取的話可以使用rewind函數把文件指針重置。

    函數名: rewind()
    功 能: 將文件內部的位置指針重新指向一個流(數據流/文件)的開頭
    注意:不是文件指針而是文件內部的位置指針,隨著對文件的讀寫文件的位置指針(指向當前讀寫位元組)向後移動。而文件指針是指向整個文件,如果不重新賦值文件指針不會改變。rewind函數作用等同於 (void)fseek(stream, 0L, SEEK_SET);

  2. 循環讀取多個文件的內容。

    把多個文件名存在一個字元串數組當中。使用循環語句反復打開-讀取-關閉即可。

    例如:

    char*s[3]={"文件一","文件二","文件三"};
    for(i=0;i<3;i++){
    f=fopen(s[i]);//打開第i個文件
    //讀取數據
    fclose(f);//關閉文件
    }