❶ 標准C語言中如何一次讀取某文件中的多行數據
有很多種方式可以一次性讀取多行數據,具體如何使用,取決於文件內容格式。
一、以fscanf讀取。
fscanf讀取時,默認會到空白字元截止。所以如果文件中不存在其它空白字元,那麼可以以fscanf實現一次性讀取多行的效果,比如文件中存儲為
1
2.3
name
那麼要一次性讀取這三行數據,可以使用:
inta;
floatb;
charc[20];
fscanf(fp,"%d%f%s",&a,&b,c);
其中,fp為打開該文件的文件指針, 分別將三行數據讀取到三個變數a b c中。
二、以fread讀取。
fread可以一次性讀取若干個數據塊,所以如果要讀取的文件內容總長度已知,那麼可以通過fread一次性讀取多行。如
thisis
for
mytest
only.
以上數據分4行,包括換行符在內共計25位元組。
此時可以使用如下代碼一次性讀取四行:
charbuf[100];
fread(buf,25,1,fp);
其中fp為打開該文件的文件指針。
❷ c語言怎樣按行讀取
區分讀取的源,有如下兩種情況:
1 從標准輸入讀取,即stdin。
可以使用gets函數:
char * gets(char *str);
該函數會從標准版輸入中讀權取一行數據,直到讀到\n,並將\n替換為字元串結束符\0,讀取到的數據以字元串形式存於str中。
需要注意的是,使用gets函數時,需要確保str指向空間大小,必須超過任意一行的長度,否則會出現越界操作。有些編譯器會報gets是不安全的,就是這個原因。
2 從文件讀取。
對於一個被打開的文件,如果其是可讀的,那麼可以通過fgets函數實現按行讀取。
char *fgets(char *buf, int bufsize, FILE *fp);
功能與gets類似,只是源不同。fgets從fp中讀一行數據存到buf中,同時會判斷bufsize,如果一行數據的長度超過了bufsize,那麼只讀入bufsize長度的數據,確保不會溢出。否則讀取整行。
由於在C語言中,標准輸入stdin也是以文件指針形式存在的,所以gets可以用
fgets(str, bufsize, stdin);
替代,這樣代碼量稍多一些,但可以更安全。
❸ 用C語言如何讀取TXT文件中的每行的第一個數據
用fgets讀入一行,用sscanf 讀出第一列數據
下面假定第一列數據作為字元串,用 sscanf(buf,"%s", 。。。格式讀。
類似,整型用 %d 浮點用 %f %lf ....
#include <stdio.h>
#include <stdlib.h>
main(){
char buf[100];
char col[100][30];
int n=0;
FILE *fp = fopen("a.txt", "r");
while ( fgets(buf, 100, fp) != NULL) {
if ( sscanf(buf,"%s",col[n]) == 1){printf("%s\n", col[n]); n++; };
}
return 0;
}
如果要讀每行第一個數,(只讀一位數 用 格式 %1d):
int x[100];
...
while ( fgets(buf, 100, fp) != NULL) {
if ( sscanf(buf,"%1d",&x[n]) == 1){ printf("%d\n",x[n]);n++;};
...
❹ C語言怎樣讀取文本的每一行
可以使用fgets函數來實現。
1 函數名:
fgets
2 聲明形式:
char *fgets(char *buf, int bufsize, FILE *stream);
3 頭文件:
stdio.h
4 功能及參數說明:
從stream中讀取一行數據存到buf中。如果數據長度小於bufsize,那麼讀入整行數據,並將換行符轉換為字元串結束符\0。 如果數據長度超過bufsize,那麼只讀入bufsize大小的數據,並在結尾添加\0。
5 返回值:
成功,則返回第一個參數buf;
在讀字元時遇到end-of-file,則eof指示器被設置,如果還沒讀入任何字元就遇到這種情況,則buf保持原來的內容,返回NULL;
如果發生讀入錯誤,error指示器被設置,返回NULL,buf的值可能被改變。