【发布时间】:2019-05-06 23:31:11
【问题描述】:
我有一个包含以下行的文本文件:
(0,0) -180.000 77.500 -999.000 -999.000 -999.000 2740.831 45.000 -0.001 -0.001 0.000 458.138 45.000 -999.000
(1,0) -179.500 77.500 -999.000 -999.000 -999.000 2740.831 45.000 -0.001 -0.001 0.000 458.138 45.000 -999.000
(2,0) -179.000 77.500 -999.000 -999.000 -999.000 2740.831 45.000 -0.001 -0.001 0.000 458.138 45.000 -999.000
(3,0) -178.500 77.500 -999.000 -999.000 -999.000 2740.831 45.000 -0.001 -0.001 0.000 458.138 45.000 -999.000
...
...
(359,0) -0.500 77.500 -999.000 -999.000 -999.000 2740.831 45.000 -0.001 -0.001 0.000 458.138 45.000 -999.000
我正在尝试使用以下程序将此文本文件 (buf) 的每一行放入数组 (buffarray) 的单个元素中:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
#define PI 4*atan2(1,1)
int main(int argc, char *argv[]) {
FILE *fp;
char buf[200];
char *token;
char buffarray[223920];
char filename[150];
int i, j, k;
sscanf(argv[1], "%s", filename);
if ((fp = fopen(filename, "rt")) == NULL) {
printf("Failed in fopen: %s\n", filename);
return -1;
}
while (!feof(fp)) {
fgets(buf, 200, fp);
token = buf;
printf("buf is %s\n", buf);
buffarray++ = token;
}
}
每次编译这个程序时我都会收到一条错误消息:
translate_ww3file.c: In function ‘int main(int, char**)’:
translate_ww3file.c:30:12: error: lvalue required as increment operand
buffarray++ = token;
^
我该如何解决这个问题?理想情况下,我想创建另一个文本文件,其中重新排列行,以便原始文本中的第 180 到 359 行首先在新文本文件中打印,然后在新文本文件中打印第 1 到 179 行。
【问题讨论】:
-
我应该使用什么?
-
仔细查看
buffarray++=token;。这真的是你想要的吗? -
如果您只想将所有字符读入一个大数组,那么您应该使用
fread()而不是fgets()。