2014-10-20 113 views
-6

說我有一個文件,像這樣:c從文件中逐一讀取字符?

1234 
56e8 
1245 

有沒有一種方法,我可以一次讀取一個字符,並在其上進行操作?或者,有沒有一種方法可以讀取一行並從中提取每個字符?

我一直在嘗試使用strtok並使用分隔符,但似乎無法找到能夠完成這項工作的分隔符。

+0

所以,你想一個'f'ile,'get'-函數,如果只有這樣的事情存在,並且被稱爲'fgets'這樣的非常直觀的東西。在學習編程之前,請學會使用谷歌,請 – 2014-10-20 15:03:13

+1

[「while(!feof(file))」的可能重複始終是錯誤的](http://stackoverflow.com/questions/5431941/while-feof-file-永遠是錯的) – 2014-10-20 15:03:43

+0

使用'fgetc' .... – BLUEPIXY 2014-10-20 15:15:36

回答

0

如果你想檢查每個字符,不需要使用strtok。

這裏有很多教程。 此代碼一次只能讀取一個字符。

FILE * pFile; 
int c; 
pFile=fopen ("myfile.txt","r"); 
if (pFile==NULL) 
    perror ("Error opening file"); 
else 
{ 
    do { 
     c = fgetc (pFile); 
    } while (c != EOF); 
} 
fclose (pFile); 
0

是的,這是可能的。一個簡單的方法來讀取每個字符都將使用fgetc

int c; 
FILE *fp=fopen("filename.txt","r"); 

if(fp==NULL) 
{ 
    printf("Error opening file!"); 
    return -1; 
} 

while((c=fgetc(fp)!=EOF) 
{ 
    //character is read in c 
    //do something 
} 
fclose(fp); 

至於逐行讀取行,使用fgets

char line[100]; 
FILE *fp=fopen("filename.txt","r"); 

if(fp==NULL) 
{ 
    printf("Error opening file!"); 
    return -1; 
} 

while (fgets (line, 100 , fp) != NULL) /* reads a line */ 
{ 
    //one line is stored in line 
    //do something with it 
} 
fclose(fp); 
+0

當你回答一個問題時,你應該正確地縮進你的代碼。 – 2014-10-21 14:24:18

+0

@MichaelWalz,是不是縮進?也許我的(舊)手機沒有正確顯示它! – 2014-10-21 15:04:54

+0

我剛編輯你的答案。現在它縮進了。你看到區別? – 2014-10-21 15:07:08