• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

suzy

system calls

6 mensagens neste tópico

:wallbash:

Malta, tenho a seguinte duvida, neste exercicio.

Recorrendo ainda a funções do sistema, construa um programa denominado mostra que exibe o

conteúdo do ficheiro, cujo o nome é opcionalmente passado pela linha de comandos (semelhante ao

comando cat). Caso o utilizador não passe nenhum nome de ficheiro, deverá assumir a entrada de

dados padrão (stdin) para leitura de dados.

eu fiz assim e nao me esta a dar correcto e nao vejo aonde esta o problema:S

#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include<fcntl.h>

int main (int argc, char **argv) {
  int i,n;
  char c, str[1];

   if (argc!=2) {
     write (2, "erro nos argumentos", strlen ("erro nos argumentos"));
     exit (1);
     }

   if ((i=open(argv[1],O_RDONLY))==-1){
     write(2,"erro ao abrir o ficheiro fonte", strlen ("erro ao abrir o
ficheiro"));
     exit (1);
     }

     while (read (i,&c,1)){
     write(i,&c,1)
}

close(i);

}

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Depois faltam-te dois imports e um return.

#include <stdlib.h>

#include <unistd.h>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isto não era para estar no quadro (ou sub-quadro) de C++ ?

E da um espaço no: #include<fcntl.h>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas...

Eis o código corrigido... E a funcionar...

#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <unistd.h>

int main (int argc, char **argv) {

FILE *file;

if (argc!=2) {
	perror("uso: ./nomePrograma  nomeFicheiro\n");
	exit (1);
}

file = fopen(argv[1],"r"); 
if ( file == NULL){
	perror("Impossível abrir ficheiro\n");
	exit (2);
}

fflush(0);
char c;
while((c=fgetc(file))!=EOF){
	write(0,&c,sizeof(char));					
	fflush(0);
}
printf("\n");
fclose(file);
exit(0);
}

Cumprimentos

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora