2010-03-28 62 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

你应该做的所有文件读入一个线程,然后如果你真的需要做的“并行编程”(家庭作业?),那么你可以有单独的线程访问数据的不同部分,你已经通过读入内存你的文件读取线程。

相关问题