Я пытаюсь создать словарь для маленькой текстовой игры.Я кодировал часть для чтения файла, предполагая, что число строк в файле неизвестно, поэтому я делаю так, чтобы он считывал весь файл один раз в начале выполнения для подсчета строк.Конечной целью было бы заставить его выбрать случайное слово в файле для обработки, поместив его в динамически размещаемый указатель.
Вот код читающей части:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <time.h>
//declaration des fonctions :
void main(void){
//Declaration des variables :
unsigned char *motSecret=NULL; //mot à trouver
unsigned char *motAffich=NULL; //mot à afficher
unsigned char vide[]="****************************"; //chaine servant à initialisation affichage
unsigned char taille=0,saisie=0,essais=10,flag1=0,flag2=0,i=0,n=0; //variables et compteurs divers
int aleat=0;
FILE *dico=NULL; //variable qui lit le fichier
srand(time(NULL));
//initialisation du mot aleatoire :
dico=fopen("dico.txt","r"); //ouvre le fichier en lecture
if(dico==NULL) //gueule si ça n'a pas marché
{printf("###FATAL ERROR : FILE EXPECTED BUT RETURNED NULL###"); exit(0);}
else
{
while((n=fgetc(dico))!=EOF)
{
if(n=='\n') taille++; //compte le nombre de lignes
}
fclose(dico);
}
}
Когдапосле этого программа зависает, как будто она обрабатывает неограниченный цикл, и процессор сразу используется на 100%, пока я не заставлю его остановиться с помощью ctrl + c.
Я собираю и запускаю его наLinux с gcc (Ubuntu 5.4.0-6ubuntu1 ~ 16.04.11) 5.4.0 20160609.
Буду признателен за любой совет.