[英]How I do read the last line of a file?
我有一个像这样的文件,从中我需要最后一行的一些值。 这是文件:
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
我想做的是读取位于最后一行的alpha
, CL
和CD
的值。
我用这个代码
#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
值得一提的是它打印出alpha = 0.00000 cl = 0.00000 cd = 0.00000实际上不是零,而是分别为0.000 0.3882 0.01268 ...
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);
}
现在,您save.txt
字符434,然后读取文件的其余部分,将每个字符打印到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)
获取实际的错误消息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.