我正試圖做這裏做的事情Read co-ordinates from a txt files using C Program。我試圖輸入數據的格式如下:解析ASCII格式文件中的數據C
f 10 20 21
f 8 15 11
. . . .
f 11 12 25
我點結構唯一的區別是,我有一個額外的字符來存儲在第一列的字母(這可能會或可能不會字母f)。我想我要麼聲明我的字符錯誤,要麼我錯誤地在printf
中調用它。無論哪種方式,我只讀取第一行,然後我的程序終止。有任何想法嗎 ?
這裏是低於
#define FILEPATHtri "/pathto/grid1DT.txt"
#define FILEPATHorg "/pathto/grid1.txt"
#define MAX 4000
#include <stdio.h>
#include <stdlib.h>
#include "math.h"
typedef struct
{
float x;
float y;
float z;
char t[1];
}Point;
int main(void) {
Point *points = malloc(MAX * sizeof (Point)) ;
FILE *fp ;
fp = fopen(FILEPATHtri,"r");
int i = 0;
while(fscanf(fp, "%s %f %f %f ", points[i].t, &points[i].x, &points[i].y, &points[i].z) == 4)
{
i++;
}
fclose(fp);
int n;
for (n=0; n<=i; n++){
printf("%c %2.5f %2.5f %2.5f \n", points[i].t, points[n].x, points[n].y, points[n].z); }
printf("There are i = %i points in the file \n And I have read n = %i points ",i,n);
return 0;
}
爲什麼使用'char t [1]'而不是簡單的'char t'? –
似乎是熟悉調試器的好時機,如果您在基於linux/unix/etc的系統上,我可以推薦GDB! –
@Fredrik:我推薦DDD –