对文件中的文件进行细分故障



我开始在C中进行编码以进行研究,但我们没有任何课程或课程。我有一个简单程序的细分故障11,我不知道为什么。我需要使用文件顺便说一句:thx寻求帮助^^

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int i;
typedef struct Passager{
    char nom[20];
    char prenom[20];
    int age;
    int num_siege;
} Passager;
Passager liste_passagers[30]; //30 = nombre de passagers
int main()
{
    FILE* fichier = NULL;
    fichier = fopen("/Users/Patoch/Desktop/Patoch /UNI/Informatique/info sem 2/Structure de données/Labo/TP3/Passager2.txt", "r");
    if (fichier == NULL)
    { //test de la bonne ouverture du fichiers
        printf("Impossible d'ouvrir le fichier Passagers.docx");
        exit(EXIT_FAILURE); 
    }   
    for (i=0; i<(sizeof(liste_passagers)/sizeof(liste_passagers[0])); i++)
    {
        fscanf(fichier, "%s %s %d %d", liste_passagers[i].nom, liste_passagers[i].prenom, &liste_passagers[i].age, &liste_passagers[i].num_siege);
        printf("nom : %s n", liste_passagers[i].nom);
    }
    fclose(fichier); 
    return 0;
}

应为 nomprenom定义空间太小,请尝试在需要时fscanf分配空间。

喜欢:

fscanf(fp, "%ms", &ptr);

修改的代码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int i;
typedef struct Passager {
    char *nom;
    char *prenom;
    int age;
    int num_siege;
} Passager;
Passager liste_passagers[30]; //30 = nombre de passagers
int main()
{
    FILE *fichier = NULL;
    fichier = fopen("Passager2.txt", "r");
    if (fichier == NULL) {
        //test de la bonne ouverture du fichiers
        printf("Impossible d'ouvrir le fichier Passagers.docx");
        exit(EXIT_FAILURE);
    }
    for (i = 0; i < (sizeof(liste_passagers) / sizeof(liste_passagers[0])); i++) {
        fscanf(fichier, "%ms %ms %d %d",
               &liste_passagers[i].nom, &liste_passagers[i].prenom,
               &liste_passagers[i].age, &liste_passagers[i].num_siege);
        printf("nom : %s n", liste_passagers[i].nom);
        free(liste_passagers[i].nom);
        free(liste_passagers[i].prenom);
    }
    fclose(fichier);
    return 0;
}

相关内容

  • 没有找到相关文章