我有一些問題,我的代碼 我讀了文件,我的文件中的數據推入一個結構數據類型ç遍歷數組
但是當遍歷dataValue這應該是結構數組 它給了我相同的dataValue,特別是文件中的最後一個。
int main() {
FILE *file;
struct characteristic {
double * dval;
double n;
char * name;
};
struct characteristic dataValue[150];
if ((file = fopen("/XXX/XXX/XXX/XXX/data", "r"))
== NULL) {
puts("error reading file");
exit(1);
} else {
int i = 0;
double var1, var2, var3, var4;
char * etiq = malloc(sizeof(char) * 100);
while (fscanf(file, "%lf,%lf,%lf,%lf,%s \n", &var1, &var2, &var3, &var4,
etiq) != EOF) {
struct characteristic *new_node;
new_node = (struct characteristic *) malloc(
sizeof(struct characteristic));
new_node->dval = &var1;
(new_node->dval)++;
new_node->dval = &var2;
(new_node->dval)++;
new_node->dval = &var3;
(new_node->dval)++;
new_node->dval = &var4;
new_node->name = etiq;
puts("=================================================");
printf("the name of characteristic number %d est : %s .\n", i,
new_node->name);
dataValue[i].dval = new_node->dval;
dataValue[i].name = new_node->name;
dataValue[i].n = i;
i++;
}
}
int i,j;
for (i = 0; i < sizeof(dataValue)/sizeof(struct characteristic); i++) {
printf("second name of characteristic number %d est : %s .\n", i,
dataValue[i].name);
for (j = 0; j < 4; j++) {
printf("bla value of vector number %d at index %d est : %lf \n", i,
j, *(dataValue[i].dval + j));
}
}
return EXIT_SUCCESS;
}
文件containe數據,如: 1.0,2.7,4.9,1.5,名
'(new_node-> DVAL)++'被遞增指針,然後您正在使用分配給它地址'&var4'到底。這個練習的重點是什麼? –
我是一個java程序員c它對我來說有點困難'我通過做一些這樣的練習來學習它',我應該讀取一個文件並將數據推送到一個結構數組,並在最後對這些數據應用一些算法 – lsroudi