[...]
void lerLinhaSorteada(char *nomeDoArquivo){
int quantidadeDeLinhas = contarNumeroDeLinhas(nomeDoArquivo);
if(quantidadeDeLinhas == -1){
return;
}
int linha = sortear(quantidadeDeLinhas);
FILE *arquivo = fopen(nomeDoArquivo, "r");
if(arquivo == NULL){
return;
}
moverPonteiroArquivo(&arquivo, linha);
char palavra[100];
fscanf(arquivo,"%s\\n",palavra);
fclose(arquivo);
printf("%s\\n",palavra);
}
int contarNumeroDeLinhas(char *nomeDoArquivo){
int quantidadeDeLinhas = 0;
char caracter;
FILE *arquivo = fopen(nomeDoArquivo, "r");
if(arquivo ==NULL){
quantidadeDeLinhas = -1;
}else{
while(fscanf(arquivo, "%c", &caracter) != EOF){
if(caracter == \'\\n\'){
quantidadeDeLinhas++;
}
}
fclose(arquivo);
}
return quantidadeDeLinhas;
}
int sortear(int limite){
return rand()%limite+1;
}
void moverPonteiroArquivo(FILE **arquivo, int linha){
char palavra[100];
for(int i=0; i<linha-1; i++){
fscanf(*arquivo, "%s\\n",&palavra);
}
}
[...]