說我有一個文件,像這樣:c從文件中逐一讀取字符?
1234
56e8
1245
有沒有一種方法,我可以一次讀取一個字符,並在其上進行操作?或者,有沒有一種方法可以讀取一行並從中提取每個字符?
我一直在嘗試使用strtok
並使用分隔符,但似乎無法找到能夠完成這項工作的分隔符。
說我有一個文件,像這樣:c從文件中逐一讀取字符?
1234
56e8
1245
有沒有一種方法,我可以一次讀取一個字符,並在其上進行操作?或者,有沒有一種方法可以讀取一行並從中提取每個字符?
我一直在嘗試使用strtok
並使用分隔符,但似乎無法找到能夠完成這項工作的分隔符。
如果你想檢查每個字符,不需要使用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);
是的,這是可能的。一個簡單的方法來讀取每個字符都將使用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);
當你回答一個問題時,你應該正確地縮進你的代碼。 – 2014-10-21 14:24:18
@MichaelWalz,是不是縮進?也許我的(舊)手機沒有正確顯示它! – 2014-10-21 15:04:54
我剛編輯你的答案。現在它縮進了。你看到區別? – 2014-10-21 15:07:08
所以,你想一個'f'ile,'get'-函數,如果只有這樣的事情存在,並且被稱爲'fgets'這樣的非常直觀的東西。在學習編程之前,請學會使用谷歌,請 – 2014-10-20 15:03:13
[「while(!feof(file))」的可能重複始終是錯誤的](http://stackoverflow.com/questions/5431941/while-feof-file-永遠是錯的) – 2014-10-20 15:03:43
使用'fgetc' .... – BLUEPIXY 2014-10-20 15:15:36