【发布时间】:2018-12-19 00:40:34
【问题描述】:
有一个问题如何将结构保存到数组并在main() 中打印出来。
我的想法是,获取 .txt 的数据,然后将其保存在结构数组中。如果我直接用printf() 输出它就可以了。
但如果我想将它保存在 struct 数组 并 打印出来 at themain() 我会得到垃圾值,什么都没有,或者只是最后一次读取的结构将被保存到数组的所有位置。
我的代码如下所示:
typedef struct CAR {
char* nickname;
char* model;
} CAR;
void getInputFromFile(struct CAR *arr) {
. . .
. . .
char *nickname = malloc(...);
char *model = malloc(...);
int i=0;
while(fscanf(file,"%s %s\n", model, nickname)==2){
printf("%s %s\n", model, nickname); // this works fine!!!
// Now when i try to save it in a struct it doesn't work
arr[i]->model = model;
arr[i]->nickname = nickname;
i++;
}
free(nickname);
free(model);
}
int main (){
struct CAR* arr[size];
getInput(arr);
// Now iterate over arr to look at values
for(i = 0; i < size; i++){
...
}
}
文件输入格式如下:
nickname model\n
nickname model\n
...
提前感谢您的所有帮助!
【问题讨论】:
-
除了布鲁诺的回答(见下文),这就是
strdup所做的:stackoverflow.com/a/252802/3589567 -
对不起@AlejandroBlasco 我删除了我的评论并将其作为答案