2010-03-28 90 views
1

我的目的是在第二列中的每個元素融入一個buffer[]從以下.txt文件閱讀:如何使用fseek()將文件指針移動到特定位置?

9992891234 09.920 15.771 11.909
9992345971 07.892 12.234 09.234
9992348971 64.567 70.456 50.987
9992348231 89.234 85.890 58.982

我有辦法知道使用fscanf()做到這一點:

for (int i=0;i<4;i++) 
    { 
    fscanf(pFile, "%lld", &junk); 
    fscanf(pFile, "%f", &buffer[i]); 
    fscanf(pFile, "%f", &junk); 
    fscanf(pFile, "%f", &junk); 
    } 

但是,由於我在做並行編程,這需要我使用不同的Windows線程來讀取不同的列,因此我需要直接使用fseek()來讀取第二列中的元素。

這裏的問題是,我應該在第二個參數fseek()下面的代碼中移動我的文件指針來讀取第二行的第二個元素?

fscanf(pFile, "%llf", &junk);//<------this is used to skip the 1st data 

    for (int i=0;i<4;i++) 
    { 
      fscanf(pFile, "%f", &buffer[i]); 
      fseek (pFile , ??, SEEK_CUR);//<----how do I calculate this offset? 
    } 
+0

你只需要調用的fscanf()一次每行,直到FEOF(PFILE)。 – 2010-03-28 08:49:35

回答

4

文件只有一個讀指針。如果您嘗試從同一個文件讀取多個線程,則會導致一系列荒謬的競爭條件。相反,只有一個線程負責讀取文件,解析行和調度作業。

1

你應該做的所有文件讀入一個線程,然後如果你真的需要做的「並行編程」(家庭作業?),那麼你可以有單獨的線程訪問數據的不同部分,你已經通過讀入內存你的文件讀取線程。

相關問題