【发布时间】:2013-08-01 17:49:15
【问题描述】:
我有两个文件,第一个看起来像这样
125 6.678
435 9.084
234 8.874
等等,大约有 2,048,000 个条目,由我的程序生成。 第二个文件是gnuplot生成的文件,看起来有点像:
65 321456 985
78 98374 834
54 8493 848
以此类推,大约有 2,048,000 个条目。
现在我需要做的是使用 3D 中的 gnuplot 将第一个文件的第二列和第二个文件的两列相互绘制。我认为第一个任务是将它们全部放入同一个文件中,我只想编写一个简单的 c 程序来快速读取这两个文件并将相关列放入一个文件中,但我不知道该怎么做。我知道如何复制文件的全部内容并使用 c 程序将它们写入另一个文件 - 例如,我有以下代码:
#include <stdio.h>
#include <stdlib.h>
int main (int argc, const char * argv[])
{
FILE *avalanche_size_BM;
FILE *avalanche_size_BM_2000;
char ch;
avalanche_size_BM = fopen("/Users/maheensiddiqui/Documents/MSc_Proj/avalanche_size_BM.dat","r");
if (avalanche_size_BM == NULL)
{
printf("I couldn't open.\n");
exit(0);
}
avalanche_size_BM_2000 = fopen("/Users/maheensiddiqui/Desktop/avalanche_size_BM_2000.dat", "w");
if (avalanche_size_BM_2000 == NULL)
{
printf("I couldn't open.\n");
exit(0);
}
printf("\n success!!");
while((ch=getc(avalanche_size_BM))!=EOF)
putc(ch,avalanche_size_BM_2000);
fclose(avalanche_size_BM);
fclose(avalanche_size_BM_2000);
return(0);
}
但是我如何告诉它只读取第一个文件中的第二列和第二个文件中的前两列并将它们(而不是所有列)复制到第三个文件,我可以用它来绘制我的 3 -D 情节。
任何帮助将不胜感激!
谢谢
【问题讨论】:
-
嗨 Maheen:从外观上看,您似乎正在使用 Mac OSX 创建文件。您是否需要在 C 中执行此操作,或者您不在乎使用什么,只要您可以从第一个文件生成第二列和第二个文件的第一两列的第三个文件?
-
除非您有理由为此编写代码,否则我怀疑您最好使用像
awk这样的工具来为您完成这项工作。至于怎么看stackoverflow.com/questions/5467690/…和hcs.harvard.edu/~dholland/computers/awk.html -
嗨!不,我不需要使用 c,但我什至不知道存在 awk 之类的东西,我会试一试,非常感谢!