gpt4 book ai didi

c - 使用 Excel 值中的指针和结构在 C 中显示问题

转载 作者:行者123 更新时间:2023-11-30 16:23:16 25 4
gpt4 key购买 nike

我在运行程序时遇到问题。事实上,我无法正确显示从 Excel 文件中获取的每个变量(使用 UTF-8 正确编码)。该 Excel 文件仅包含城市名称。这些名称存储在结构中(此处为测试),该结构位于我的指针列表中,名为:“test_list”。但是,当我之前显示这些变量时,它们会正确显示。

请参阅下面我的简化程序和输出:

#include <stdio.h>
#include <stdlib.h>

typedef struct Test Test;

const nbr_villes = 23;

struct Test
{
char* nom;
};

Test *init_test(char *nom) {

Test *test = malloc(sizeof(Test));
test->nom = nom;

return test;
}

void fill_test(Test **test_list)
{
FILE *csv_file = fopen("villes.csv", "r");

char line[1024];

// remove header "Ville"
fgets(line, 0, csv_file);

for (int i = 0 ; i < nbr_villes ; i++)
{
fgets(line, 1024, csv_file);
char *tmp = strdup(line);
printf("%s\n", tmp);
test_list[i] = init_test(tmp);
free(tmp);
}
}

int main()
{
// 23 éléments dans liste de test
Test **test_list = malloc(nbr_villes * sizeof(struct Test));
fill_test(test_list);

for (int i = 0; i < nbr_villes; i++){
printf("%s\n",test_list[i]->nom);
}
}

和输出:

(prints of tmp :)

ville

Amiens

Bayonne

Bordeaux

Bourges

Caen

Clermont-Ferrand

Dijon

Grenoble

Le-Mans

Lille

Lyon

Marseille

Metz

Montpellier

Nantes

Nice

Niort

Paris

Reims

Rennes

Strasbourg

Toulouse

(Errors are here : prints in the main loop :)

@f
@f
êf
êf
êf
êf
¿f
¿f
░f
░f
░f
░f
░f
Metz

░f
Rennes

Ïf
Niort

pf
hf
Rennes

Strasbourg

Toulouse

谢谢你的帮助。

最佳答案

    char *tmp = strdup(line);
printf("%s\n", tmp);
test_list[i] = init_test(tmp);
free(tmp);

char *内存 int 测试 本身内存在 test_list 中由free(tmp)

释放

test->nom = nom;复制指针,字符串不重复,需要做test->nom = strdup(nom);或者只是删除 free(tmp);

但对我来说最好的方法是调用init_test(line) (没有重复)并且 strdup 是在 init_test 中制作的因为它必须知道必须完成复制,而不是调用者

关于c - 使用 Excel 值中的指针和结构在 C 中显示问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54054784/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com