我有以下文本文件results.txt:
x y u v
3 2 10 12
3 3 10 15
3 4 11 15
5 1 10 12
5 2 12 13
5 3 9 9
现在我想从上面的文件中取出值u和v并将它们放到另一个文件中,其中x从2到5,y从1到5,所以我可以得到所需的输出:
2 1
2 2
2 3
2 4
2 5
3 1
3 2 10 12
3 3 10 15
3 4 11 15
3 5
4 1
4 2
4 3
4 4
4 5
5 1 10 12
5 2 12 13
5 3
5 4
5 5
为了在上面的输出中生成x和y值,我只使用一个循环,如下所示:
#include <stdlib.h>
#include <stdio.h>
int main() {
float lat,lon;
int count;
count=1;
for ( lat = -70; lat <= 80; lat = lat + .125){
for ( lon = -179.875; lon <= 180; lon = lon + 0.125){
printf("%d) Value of lat/lon: %0.2f/%0.2f\n", count,lat,lon);
count=count+1;
if (xx= x && yy = y){
printf("%d %d %f %f\n",xx,yy,u,v)
}
else
{
printf("%d %d\n",x,y)
}
}
}
}
在上面的c程序片段的上下文中,我该如何读取文件results.txt以及上面的循环,以便当上面循环中的x和y值组合与结果中的x和y组合匹配时.txt(xx和yy)插入它会从results.txt文件中打印相应的行吗?如何使用适当的读取语句调整上述程序以获得所需的输出结果?
答案 0 :(得分:0)
好的,让我告诉你我不明白你想用你的示例代码做什么。它似乎与您的问题无关:
使用其他文本文件中的值填写一个文本文件
如果您已经填充了results.txt
,并且希望按照您的定义填写第二个文件(我们称之为second.txt
),那么您可以按照以下步骤操作:
#include <stdio.h>
#include <stdlib.h>
int main() {
FILE* fp;
int x, y, i;
char found = 0;
int results[1024][4] = {};
int rows = 0;
/* Open the results.txt for read. */
fp = fopen("results.txt", "r");
if(fp == NULL)
exit(EXIT_FAILURE);
/* Parse results.txt line-by-line and store the values to results array. */
while(fscanf(fp, "%d %d %d %d\n",
&results[rows][0], &results[rows][1],
&results[rows][2], &results[rows][3]) == 4 && rows < 1024) {
printf("x: %d, y: %d, u: %d, v: %d\n", results[rows][0],
results[rows][1], results[rows][2], results[rows][3]);
rows++;
}
fclose(fp);
/* Open the second.txt for write. */
fp = fopen("second.txt", "w");
if(fp == NULL)
exit(EXIT_FAILURE);
for(x = 2; x <= 5; ++x) {
for(y = 1; y <= 5; ++y) {
found = 0;
/* Search for matching entry in results array. */
for(i = 0; i < rows; ++i) {
if(results[i][0] == x && results[i][1] == y) {
found = 1;
break;
}
}
if(found)
fprintf(fp, "%d %d %d %d\n", x, y, results[i][2], results[i][3]);
else
fprintf(fp, "%d %d\n", x, y);
}
}
fclose(fp);
exit(EXIT_SUCCESS);
}
上面的示例未经过优化,但经过测试和运行。它仅限于results.txt
中最多1024行。