为什么我的代码没有输入else语句?

时间:2019-12-23 16:54:27

标签: c if-statement

请参阅我在这里的情况。请参阅我的代码,如下所示,在分配给'int'类型的变量“ fd”之前,一切正常。即使fd!= -1也不输入else语句。谁能解释我的原因,也许可以解决它?

int mostra(char *nomeFicheiro) //Mostra o conteúdo dum ficheiro; Retorna 1 com sucesso, 0 com erro
{
    char aux[4000];
    int cont = 0, i = 0, resultado = 2;
    int fd = open(nomeFicheiro, O_RDONLY); //abre o ficheiro 'nomeFicheiro' em modo RDONLY no descritor fd
    printf("fd = %d\n\n", fd);
    if (fd == -1) 
    {
        resultado = 0; 
        printf("resultado = %d\n", resultado);
    }
    else
    {
        //o programa não entra aqui, tudo para cima funciona, mas não entra neste else
        printf("b");
        read(fd, aux, sizeof(aux));
        printf("c");
        int teste = conta(nomeFicheiro);
        while (aux[cont] != EOF || i <= teste)
        {
            if (aux[cont] == '\n') {
                printf("%d", i); i++;
            }
        }
        printf("d");
        write(1, aux, cont);
        printf("e");
        resultado = 1;
    }
    close(fd);
    printf("after close, resultado = %d\n\n", resultado);
    return resultado;
}

1 个答案:

答案 0 :(得分:0)

这是更改后的最终功能,谢谢大家:D

int mostra(char *nomeFicheiro) //Mostra o conteúdo dum ficheiro; Retorna 1 com sucesso, 0 com erro
{

char aux[4000];

int cont = 0, i = 0, resultado = 2;

int fd = open(nomeFicheiro, O_RDONLY); //abre o ficheiro 'nomeFicheiro' em modo RDONLY no descritor fd

if (fd == -1) {resultado = 0;}

else
{

int var = read(fd, aux, sizeof(aux));

write(1, aux, var);

printf("\n");

resultado = 1;

}

close(fd);

return resultado;

}