c - 为什么我的代码没有进入 else 语句?
问题描述
看我这边有情况。请参阅我的代码,您可以在下面看到,在分配给“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;
}
解决方案
这是修改后的最终功能,谢谢大家 :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;
}
推荐阅读
- python - 使用 requests.get() python 时出现 403 错误
- java - Maven - 在war文件的根目录中包含外部资源
- reactjs - Jest --findRelatedTests 没有找到相关的测试
- python - mysql数据库python
- django - Django 中的身份验证 is_authenticated
- node.js - 使用具有 root 访问权限的 nodejs 执行 shell 命令
- git - Git - 将带有历史记录的文件夹移动到另一个项目中
- flutter - Flutter - 使用相同的提供程序更新下拉列表并将数据发送到另一个小部件
- django - Postgres 如何保存数据?
- javascript - 如何对打字稿中的循环应用时间限制