1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

conteudo do ficheiro para fgets em C

Discussão em 'Programação' iniciada por The Dealer, 31 de Outubro de 2008. (Respostas: 4; Visualizações: 1280)

  1. The Dealer

    The Dealer Power Member

    Estou a tentar fazer uma aplicação cliente servidor.

    A aplicação cliente liga-se ao servidor através de:
    ./client ipaddress port filename

    A questão é, numa primeira fase eu tinha o programa a funcionar fazendo um input do nome do ficheiro (ver fprintf mais abaixo em comentario), mas agora quero passar o nome do ficheiro como argumento, mas não estou a conseguir fazer... Não me lembro sinceramente como se faz.. Em baixo está a parte do programa que faz isso, ou deveria fazer. Poderiam-me ajudar? Experimentei por
    fgets(buffer,255,fp), mas da-me a informação "erro abrindo o ficheiro", algo que nao compreendo pois nem no código está, e se deixar como está agora, o programa nao avança...

    Código:
     if( (fp = fopen(argv[3], "w")) == NULL) // esta é a parte "nova"
        {
        printf("Erro ao criar o ficheiro\n");
        exit(1);
        }
     
        
     //  fprintf(stderr,"Introduze nome do ficheiro a transferir: ");
       
       buffer=(char*)malloc(NOMELEN); 
       bzero(buffer,256); // limpar buffer                       // está e a "velha"
       fgets(buffer,255,stdin);                         // é este stdin que vai buscar a string do ficheiro para depois criar um novo.
       buffer [strlen(buffer)-1] = '\0';   //remover o /n deixado pela funcao fgets
          
    
       n=sendto(sock,buffer,strlen(buffer),0,(const struct sockaddr *)&server,length);
     
    Última edição: 31 de Outubro de 2008
  2. Mr_Miguel

    Mr_Miguel Power Member

    Código:
    fp = fopen(argv[3], "w")
    Penso que o teu problema é este. Estás a abrir o ficheiro para escrita ("w"), e no entanto estás a tentar fazer um fgets, que é leitura.
     
  3. The Dealer

    The Dealer Power Member

    Não porque é assim: o servidor envia o conteudo de um ficheiro pelo buffer. E eu vou criar um ficheiro para lá escrever o conteudo (algo que faço mais a frente).

    Se colocar essa instrucção fgets(buffer,255,fp), dá-me "erro abrindo ficheiro". Penso que essa deve ser uma informação predefinida do GNU, pois não tenho essa verificação em lado nenhum. (tenho outra mas não essa)
     
  4. Mr_Miguel

    Mr_Miguel Power Member

    Vamos olhar para o teu fgets. fgets(buffer,255,fp) - o que é, aqui, o fp? É isto?

    Código:
    fp = fopen(argv[3], "w")
    Se não for, mostra-me o que é o "fp" quando tu chegas ao fgets. O fgets só faz sentido em ficheiros abertos para leitura, e tu nunca postaste código que indicasse um ficheiro aberto para leitura, percebes a minha confusão?
     
    Última edição: 31 de Outubro de 2008
  5. JomarC

    JomarC Power Member

    O que tas a tentar fazer e um servidor HTTP?
     

Partilhar esta Página