2013-02-26 45 views
0

我有一个这样的文件,我需要从它的最后一行的一些值。这是文件:我如何阅读文件的最后一行?

 
XFOIL Version 6.96 

Calculated polar for: pane 

1 1 Reynolds number fixed Mach number fixed 

xtrf = 1.000 (top) 1.000 (bottom) 
Mach = 0.000 Re = 0.100 e 6 Ncrit = 4.000 

alpha CL CD CDp CM Top_Xtr Bot_Xtr 
------ -------- --------- --------- -------- -------- -------- 
0.000 0.3882 0.01268 0.00440 -0.0796 0.6713 1.0000 

我想要做的是阅读的alphaCLCD位于最后一行的值。

我使用此代码

#include <stdio.h> 
#include <stdlib.h> 


int main() 
{ 
    FILE * pFile; 
    FILE * test1; 

    char ch; 
    double alpha,lift,drag; 
    int i; 

    pFile = fopen("save.txt","r"); 
    test1 = fopen("test1.txt","w"); 

    fseek (pFile , 434 , SEEK_SET); 

    while((ch = fgetc(pFile)) != EOF){ 
     fputc(ch, test1); 
    } 

    for(i = 0; i < 3; i++) 
    { 

    fscanf(test1, "%lf ",&alpha); 
    fscanf(test1, "%lf ",&lift); 
    fscanf(test1, "%lf",&drag); 

    } 

    printf("alpha = %lf cl = %lf cd = %lf",alpha,lift,drag); 

    fclose(test1); 
    fclose (pFile); 
    return 0; 
} 

预先感谢您...

Guys thank you all for your answers what i forgot 

提的是,它打印出的是阿尔法= 0.00000 CL = 0.00000 CD = 0.00000,实际上是非零但是 0.000 0.3882 0.01268相应... !!

+1

什么不按预期工作? – 2013-02-26 22:38:45

+0

将每行的值读入相同的变量。由于最后一行是最后一行,因此变量将以最后一行的值结束。 – 2013-02-26 23:13:54

回答

3
pFile = fopen("save.txt","r"); 
    test1 = fopen("test1.txt","w"); 

您正在阅读开放save.txt,并test1.txt进行写操作。

fseek (pFile , 434 , SEEK_SET); 

    while((ch = fgetc(pFile)) != EOF){ 
     fputc(ch, test1); 
    } 

您现在跳过字符434 save.txt,然后读取文件的其余部分,打印每个字符伸到test1.txt

for(i = 0; i < 3; i++) 
    { 

    fscanf(test1, "%lf ",&alpha); 
    fscanf(test1, "%lf ",&lift); 
    fscanf(test1, "%lf",&drag); 

    } 

你正试图从test1.txt阅读,但它是开放的写作,当前位置是在文件的结尾。如果你想读取它,你需要关闭它并打开它进行读取,或者打开它,读写(fopen(..., "rw")),然后在开始读取之前将当前位置重置到文件的开头(它是未定义如果你不这样做会发生什么)。

实际上,您不应该跳过一个字节偏移量,将最后一行复制到另一个文件中,然后读取该新文件。您可以直接从原始文件中读取最后一行。不需要从一个文件读入另一个文件的循环;只需在原始文件上运行您的scanf()即可。

记得检查你的函数调用错误。您拨打的scanf()调用可能会返回错误。你可以用ferror(file)检查错误,并用strerror(errno)得到实际的错误信息。

+0

谢谢大家的回答我忘了提及的是,它打印出alpha = 0.00000 cl = 0.00000 cd = 0.00000其实非零但是0.000 0.3882 0.01268相应... !! – user2019482 2013-02-27 10:55:44

+0

您是否尝试了我提出的建议?他们帮忙了吗?你能否展示新版本,并指出它出了什么问题? – 2013-02-27 15:35:27

相关问题