• 0
Sign in to follow this  
fabiofill

Problema usando txt

Question

Galera estou com o seguinte problema....

Quero q seja adicionado a um arquivo txt o contaúdo de uma variável int, com string funcionou muito bem porém quando eu coloco a variável como conteúdo me retorna um (quadrado)

o meu código é o seguinte:

extern int num_coin;
FILE * coin;

 coin = fopen ("fichas/fichas.ini","w");
 if (coin == NULL) 
      perror ("Erro abrindo banco de fichas");
 else {
      fputc(num_coin,coin);
      fclose(coin);
 }

Onde estou errando? :blink:

Desde já agradeço.....

Share this post


Link to post
Share on other sites

9 answers to this question

Recommended Posts

  • 0
Guest quitZAUMMM

olha eu fiz dessa maneira pra escrever um inteiro no txt:

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
main(){
int num_coin;
FILE * coin;

coin = fopen ("arq.txt","w");
if (coin == NULL) 
      perror ("Erro abrindo banco de fichas");
else {
      scanf("%d",&num_coin);
    fprintf (coin, "%d",num_coin);
      fclose(coin);
}

getch();
}

Share this post


Link to post
Share on other sites
  • 0

Amigo perfeito.... e agora como faço pra recuperar o conteúdo do txt... usando um script com esta funcção q você usou??? só pra não misturar um monte de funções.. nas verdade pra padronizar o código...

Share this post


Link to post
Share on other sites
  • 0
Guest quitZAUMMM

acho q você deve estar falando para ler o txt não é?!

ai vai

char lertxt()
{
    FILE *p;
    char c;
    if ((p = fopen("arq.txt","r")) == NULL)
    {
    printf("Erro! Impossivel abrir o arquivo!\n");
        exit(1);
    }
    c = getc(p);
    while (!feof(p))
    {
        printf("%c",c);
        c = getc(p);
    }
    printf("\n\n");
    fclose(p);
}

você pode também ao invez ler caracter por caracter ler uma linha inteira veja aki este exemplo q passei para outro usuario usando o fgets: http://scriptbrasil.com.br/forum/index.php?showtopic=116731

[]'s

Share this post


Link to post
Share on other sites
  • 0
Guest --fabiofill --

A propósito... o que eu precisava mesmo era o seguinte.... gravar o conteúdo de uma variável int em um txt.. até aí consegui... e dps recuperar e conteúdo do txt e substiruir o valor da varíavel int usada anteriormente pelo valor do conteúdo txt....

Share this post


Link to post
Share on other sites
  • 0

Boa noite.

Fabiofill, você não deve tratar o número como se fosse uma string nesse caso. Portanto recomendo que use escrita e leitura binária ("wb" e "rb") com as funções fread e fwrite; cheque o uso dessas funções em http://www.cppreference.com/stdio/fwrite.html ou em outro site, este é um site bom de referência que eu recomendo, mas tem também o http://www.cplusplus.com .

Esse problema eu resolvi pra você

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
  int num_coin;
  FILE *coin = fopen("arq.txt", "wb");

  if (coin == NULL) {
    perror("Erro abrindo banco de fichas para escrita.");
    exit(1);
  }

  scanf("%d", &num_coin);
  fwrite(&num_coin, sizeof(int), 1, coin);   /* cheque no site de referência os parâmetros */
  fclose(coin);

  coin = fopen("arq.txt", "rb");
  if (coin == NULL) {
    perror("Erro abrindo banco de fichas para leitura.");
    exit(1);
  }

  num_coin = 999;   /* Só para garantir que o valor será realmente lido do arquivo. */
  fread(&num_coin, sizeof(int), 1, coin);
  printf("Dado lido: %d\n", num_coin);

  return 0;
}

Share this post


Link to post
Share on other sites
  • 0

Olha entendi como fnciona.. só q desta vez ao usar o código do maigo Douglas voltaram a aparecer os quadrados no lugar do número desejado.... o que pode estar acontecendo?

Essa função está funcionando da seguinte forma.... quando um determinado botão de um joystick é pressionado chama uma função que adiciona + 1 a variável int num_coin.. e nesta mesma função deveria salvar o valor da variável no txt... porém ficam os quadrados :( :wacko:

Share this post


Link to post
Share on other sites
  • 0

Boa tarde!

Fabiofill, o que você quer é que o programa reconheça os valores ou que eles fiquem legíveis com um editor de texto?

A questão é: o valor numérico de um caractere geralmente difere do valor que ele corresponde, logo: 2 != '2' .

O fato é que a representação de '2' - como caractere tem seu valor numérico específico, em ASCII é 50.

Gravando simplesmente o valor 2 em um arquivo, ao abrir com um editor você lerá o caractere correspondente a 2 em ASCII (nesse caso o quadrado). Para gravar um caractere você não necessita de escrita binária, logo a função fprintf funciona perfeitamente.

Contudo, você já sabe como gravar dados em um arquivo, cabe a você decidir se o leitor será o usuário ou o computador.

Até a próxima!

Edited by == Douplus ==

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this