我用哪个函数从文件中读取文本?

时间:2014-01-04 17:53:28

标签: c algorithm file dynamic struct

这是我想用这种格式从文件

加载到终端的文本
                                    nom                  : avatar
                                    type                 : Science_fiction
                                    l'annee de sortie    : 2012
                                    duree                : 120 minutes
                                    numero de reference  : 9

                                    nom                  : dark_knight
                                    type                 : Action
                                    l'annee de sortie    : 2008
                                    duree                : 124 minutes
                                    numero de reference  : 8

我厌倦了使用sscanf它可以工作,但每个输入都需要一行不再

avatar Science_fiction 2012 120 9
dark_knight Action 2008 124 8

这是我的代码

   #include<stdlib.h>
   #include<stdio.h>
   #include<string.h>
   #include "structure_film.h"

   void load(struct film **head,struct film **current, FILE ** fichier,struct film **tail)

         char donnesDuFilm[255];

   struct film *premierfilm;premierfilm=(struct film*)malloc(sizeof(struct film));

    printf("le programme est en train de charger le catalogue depuis le fichier     catalogue\n");


   if (fgets(donnesDuFilm,255,*fichier)&&(strcmp(donnesDuFilm,"")))
    {


      sscanf(donnesDuFilm,"nom %s  type %s l'annee de sortie %d duree %d numero de reference %d\n",&premierfilm->nom,&premierfilm->typeFilm,&premierfilm->dateSortie,&premierfilm->duree,&premierfilm->id);

      printf("%s %s %d %d %d\n",premierfilm->nom,premierfilm->typeFilm,premierfilm->dateSortie,premierfilm->duree,premierfilm->id);


     *head=premierfilm;
    }
    while (fgets(donnesDuFilm,255,*fichier)&&(strcmp(donnesDuFilm,"")))
    {  
          struct film *nouveauFilm;

        nouveauFilm=(struct film*)malloc(sizeof(struct film));premierfilm->next=nouveauFilm;


        sscanf(donnesDuFilm,"nom %s  type %s l'annee de sortie %d duree %d numero de reference %d\n",&nouveauFilm->nom,&nouveauFilm->typeFilm,&nouveauFilm->dateSortie,&nouveauFilm->duree,&nouveauFilm->id);

        printf("%s %s %d %d %d\n",nouveauFilm->nom,nouveauFilm->typeFilm,nouveauFilm->dateSortie,nouveauFilm->duree,nouveauFilm->id);


        premierfilm=nouveauFilm;
        nouveauFilm->next=NULL;



    }

*current=premierfilm;*tail=premierfilm;


}

1 个答案:

答案 0 :(得分:0)

fscanf是用于从文本文件中读取的函数。考虑到它是一个非常常见的功能,谷歌应该有关于它的负载。但是首先你需要创建一个文件指针,并使用fopen。

char stringname[15]
FILE *filename = fopen("filelocation", r);
fscanf(filename, "%s", stringname);