2016-01-14 83 views
0

我這塊方案,我用它來從文件中讀取數據:如何從忽略空格的文件中讀取數據?

void baca(int *n) 
{ 
    FILE *f = fopen("namafile.txt", "r"); 
    if (f) 
    { 
     while (fscanf(f, "%[^|]|%d|%[^\n]\n", mhs[*n].nama, &mhs[*n].umur, mhs[*n].hp)==3) 
     { 
      (*n)++; 
     } 
    } 
    fclose(f); 
} 

如果我寫這樣的文件中的數據,然後程序正確讀取它:

nko|20|9999 

hotma|21|9982882 

andi|30|212313 

但當我加入一些空間就是這樣,不知它不能正確讀取它:

nko | 20 | 9999 

hotma | 21 | 9982882 

andi | 30 | 212313 

能有人給我我應該做的一些暗示?

+0

查看[this](http://stackoverflow.com/questions/20803245/how-to-write-and-read-including-spaces-from-text-file)鏈接,看看它可以提供幫助。 –

回答

8

添加一個空格的格式字符串指定輸入可以有一個可選的空格

fscanf(f, "%[^|] |%d | %[^\n]\n", ...) 
//    ^^^ ^^^^^ optional whitespace 

轉換"%d"已經包括可選的前導空格。

如果您的輸入字符串將來可能變得更加混亂,那麼您將使用單獨的解析器而不是scanf()做得更好。

+0

thx你的回答真的幫了我 – nff21

相關問題