Ir para o conteúdo
suzy

system calls

Mensagens Recomendadas

suzy    0
suzy

: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);

}

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
NameException    0
NameException

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

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


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade