Svensl woof ? | Help J'ai ceci :
Code :
- instr_s* read_file(char *name) {
- FILE *fd;
- char line[255];
- char line_tmp[9];
- instr_s *ret;
- uint32_t i, size;
- word *mem;
- printf("fonction read_file :\n" );
- /* reservation de la memoire pour stocker toutes les instructions */
- size = 10;
- if ((mem = malloc(sizeof(mem) * size)) == NULL) {
- fputs("erreur: impossible d'allouer la memoire pour la lecture\n", stderr);
- exit(-1);
- }
- /* ouverture du fichier specifie en lecture seule */
- if ((fd = fopen(name, "r" )) == NULL) {
- fprintf(stderr, "erreur: impossible d'ouvrir le fichier %s\n", name);
- exit(-1);
- }
- printf("avant fgets\n" );
- /* lecture fichier ligne par ligne et stocke chaque instruction dans mem */
- i = 0;
- while (fgets(line, 255, fd) != NULL) {
- printf("ok while\n" );
- printf("ok while : i = %d\n",i);
- /* recupération de la premiere partie de l'instruction (op-code, suffixe et registre(s)) */
- strncpy(line_tmp,line+2,8);
- mem[i].part1 = str_to_uint64(line_tmp);
- printf("mem[%d].part1 ok\n",i);
- /* recuperation de la seconde partie contenant la constante imm */
- strncpy(line_tmp,line+10,8);
- mem[i].part2 = i3e754_to_float(str_to_uint64(line_tmp));
- printf("mem[%d].part2 ok\n",i);
- i++;printf("avt if\n" );
- if (i >= size) {
- size *= 2;
- /* si on n'a pas assez de place on double la taille */
- if ((mem = (word*) realloc(mem, sizeof(mem) * size)) == NULL) {
- fputs("erreur: impossible d'allouer la memoire pour la lecture\n", stderr);
- exit(-1);
- }
- }
- printf("fgets(line, 255, fd) : %d\n",(fgets(line, 255, fd)));
- printf("fin pour i = %d\n",i-1);
- }
- /* fermeture du fichier */
- fclose(fd);
- fd = NULL;
|
Je compile avec GCC, et je débug avec GDB.
Et j'ai une erreur de segmentation à la 6ème itération de la boucle.
J'ai Mot1, Mot2, Mot3 etc et ça s'arrête à Mot6, apparemment fgets me renvoit un null.
Je patine, j'ai bien googlisé mais je sèche
|