Ir ao conteúdo
  • Cadastre-se

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


brxuser

Posts recomendados

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...

:)

Link para o comentário
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

Link para o comentário
Compartilhar em outros sites

  • 2 anos depois...

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...

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...