Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
brxuser

Manipulação de arquivos (fopen, write,..) : linux gcc

Recommended Posts

Bom dia ae pessoal,

preciso fazer um programa que basicamente efetue entrada e saida de dados em arquivos, até ai tudo bem. porém só posso utilizar neste exercício chamadas de sistema. Apenas read e write.

A ideia do exercício é explorar a entrada e saida de dados am ambiente linux.

O problema e o seguinte, eu consigo utilizar o write normalmente para as escrever na entrada padrão (stdin) e também normalmente pra escrever na saida padrão (stdout), porém quando tento escrever em um arquivo que criei não funciona. A função fopen chega a criar o arquivo porém não escreve no mesmo, gostaria de saber onde esta meu erro, desde ja agradeço a ajuda,

segue um versão simplificada do código, não e necessário preocupação com o trecho em que o conteudo e carrado para a variavel buffer, já que o conteudo e carregado do buffer do teclado sem problemas.


#include <sys/types.h>
#include<stdio.h>
#include <unistd.h>

int main(){
char buffer[100];
(...) // neste trecho carrego conteudo existente no buffer do teclado

/* como o trecho acima nao apresenta problema para simplificar (caso alguem deseje testar) pode ser subistiruido por uma entada de dados com scanf mesmo.
- neste momento tenho o conteudo desejado na variavel buffer
*/

//
FILE * inp;
inp = fopen("entrada.txt","w");
/* ja testei outros modos w, inclusive ja setei permissão 666 para o arquivo criado, acretido ser algo relacionado porém não sei como contornar */
write(inp,buffer,100); // fprintf(inp,buffer,100); com funciona perfeitamente!
fclose(inp);
}

desde ja agradeço a atenção,

abraço ae galera...

:)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo, sou novo em Programação, começei a menos de uma mes, nao sei se estou errado, nao nao custa nada tentar ajudar né.

Bom, no eu codigo, tenta usar o comando if.

if (imp = fopen("entrada.txt", "w");

e tambem, declara ai FILE *imp, sem o espaço entre o asterisco e imp, e declara ele no começo do codigo, la onde se declaram as variaveis.

outra opção pra tentar escrever no arquivo, tenta usar fprintf pra executar saida formatada no arquivo ok.

espero q eu possa ajudar. um abraço e ate mais valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tipo eu nunca usei write... Tente usar fprintf:

int fprintf ( FILE * stream, const char * format, ... );

fprintf (inp, "%s\n",buffer);

Acho que isso resolveria

Flws

:D

Editado por gandalfnho
Mensagem toda colorida

Compartilhar este post


Link para o post
Compartilhar em outros sites

opaa..

pessoal valeu os toques ai, mais nao posso utilizar neste caso nenhuma função própia do c, o exercício deve ser implementado usando apenas chamadas de sistema,

com fprintf o programa funciona perfeitamente..

valeu a ajuda aeee..

abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não sei como funciona essa função write, mas tenta fazer um for percorrendo o buffer e dando write em caractere por caractere...

Se achar a solução, posta ela pra gente...

{Edit}

Esse site vai te ajudar: http://www.cplusplus.com/reference/iostream/ostream/write.html

{Fim edit}

Abraços

Editado por fandre

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rapaz, você usa um ponteiro de arquivo(FILE*) pra receber um retorno de ponteiro de arquivo, ok. Mas write só escreve com base em descritores inteiros validos, não acha?

você deveria mudar o fopen() por open() ou create(), e mudar o FILE* pra int

Compartilhar este post


Link para o post
Compartilhar em outros sites

write só vai servir para imprimir no arquivo se você definir a saída padrão como sendo esse arquivo...

Afinal as únicas entradas de write são a string para impressão e a quantidade de caracteres que você quer imprimir...

E o local de escrita é a saída padrão, ou seja, monitor...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×