Ir ao conteúdo

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


brxuser

Posts recomendados

Postado

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

:)

Postado

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

Postado

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

Postado

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

  • 2 anos depois...
Postado

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

Postado

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

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!