Programando C em Linux - Problemas

1. Programando C em Linux - Problemas

Shu Hikari
Shu Hikari

(usa Ubuntu)

Enviado em 20/11/2008 - 12:33h

Ola a todos

Estou usando o Geany, como IDE para aprender a programar aqui na faculdade, porem, estou com algumas dificuldades.

Sempre que tento usar a biblioteca io.h (facilmente utilizada no Dev C++) encontro este erro:
Segue o codigo e o erro logo abaixo:

#include <fcntl.h>
#include <io.h>
#include <stdio.h>
#include <stdlib.h>


void main(int argc, char *argv[]){
int fd;
char ch;

if ((fd=open(argv[1], O_RDONLY))==-1) {
printf("O arquivo não pode ser aberto.\n");
exit(1);
}

while(!eof(fd)) {
read(fd, &ch, 1);
printf("%c", ch);
}
close(fd);
}



Erro gerado:

Uso eof.c:2:16: erro: io.h: Arquivo ou diretório inexistente
Compilação falhou.
Uso eof.c:7: aviso: return type of &#8216;main&#8217; is not &#8216;int&#8217;
Uso eof.c: Na função &#8216;main&#8217;:
Uso eof.c:16: aviso: implicit declaration of function &#8216;eof&#8217;
Uso eof.c:17: aviso: implicit declaration of function &#8216;read&#8217;
Uso eof.c:20: aviso: implicit declaration of function &#8216;close&#8217;

Agradeço a atençao desde jah

P.S. Sou iniciante aqui na comunidade tambem, desculpe se postei de maneira errada

Kamisama to issho ni






  


2. Re: Programando C em Linux - Problemas

Marcelo A. B. Slomp
mslomp

(usa Slackware)

Enviado em 22/11/2008 - 10:22h

io.h não é nativa da libc, por implementar algumas funções não-posix.
em sistemas posix (como é o caso do linux), essas funções estão em unistd.h, que no seu caso já será incluída ao expandir fcntl.h
pelo motivo citado acima, eof não está implementada (não posix). e até mesmo por uma questão de redundância, já que você captura o "end of file" através de read (quando retorna zero), e assim você mata 2 coelhos com uma só cajadada, como pode observar abaixo no while.
só mais uma coisa: evite o uso de void main - use int main

segue a versão portada:

#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]){
int fd;
char ch;

if ((fd=open(argv[1], O_RDONLY))==-1) {
printf("O arquivo não pode ser aberto.\n");
exit(1);
}

while(read(fd, &ch, 1)) {
printf("%c", ch);
}
close(fd);
return 0;
}






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts