Я столкнулся с проблемой при запуске моей программы. Действительно, я не могу правильно отобразить каждую выбранную переменную из моего файла Excel (правильно закодированный с помощью UTF-8). Этот файл Excel содержит только названия городов. Эти имена хранятся в структурах (Test здесь), которые находятся в моем списке указателей с именем: "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
Спасибо за помощь.