FELiYCORA
1st Folding then Sex
Boas, tou com o seguinte problema num programa que estou a desenvolver em C:
Neste troço de código, o programa deve ler as linhas de um ficheiro de texto uma a uma (isso está a ser conseguido) e passar a string para dentro de uma função que a decompõe e processa. O problema neste troço de código é que a variável aux nunca fica com o valor NULL e não estou a perceber porquê, ou seja, se o teste_comando não retornar 0 o ciclo nunca acaba e pelo resultado do programa, ele fica sempre a ler a última linha. Porque é que o fgets não me está a devolver NULL?
O ficheiro tem este formato:
Ele faz tudo bem mas fica sempre a ler a última linha em vez de acabar o ciclo, a não ser que eu na linha seguinte do ficheiro escreva END, que é o comando que faz com que a função teste_comando retorne 0.
Obrigado desde já.
Neste troço de código, o programa deve ler as linhas de um ficheiro de texto uma a uma (isso está a ser conseguido) e passar a string para dentro de uma função que a decompõe e processa. O problema neste troço de código é que a variável aux nunca fica com o valor NULL e não estou a perceber porquê, ou seja, se o teste_comando não retornar 0 o ciclo nunca acaba e pelo resultado do programa, ele fica sempre a ler a última linha. Porque é que o fgets não me está a devolver NULL?
O ficheiro tem este formato:
DEPEND 3 2
DEPEND 2 0
INSTALL 3
Ele faz tudo bem mas fica sempre a ler a última linha em vez de acabar o ciclo, a não ser que eu na linha seguinte do ficheiro escreva END, que é o comando que faz com que a função teste_comando retorne 0.
Obrigado desde já.
Código:
case 3:
ficheiro = fopen(argv[2], "r");
if(ficheiro == NULL)
{
printf("Erro ao abrir ficheiro");
}
do
{
aux = fgets(linha, DIMV, ficheiro);
switch(teste_comando(linha, &arg1, &arg2))
{
case 2:
matriz [arg1] [0] = arg2;
break;
case 1:
install (arg1, matriz);
break;
case 0:
fim = 1;
exit(0);
default:
break;
}
}
while ( (aux != NULL) || (fim != 1) );
fclose(ficheiro);
argc = 1;
break;