Ir para conteúdo
Fórum Script Brasil
  • 0

Problema usando txt


fabiofill

Pergunta

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

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 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();
}

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

Link para o comentário
Compartilhar em outros 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....

Link para o comentário
Compartilhar em outros 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;
}

Link para o comentário
Compartilhar em outros 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:

Link para o comentário
Compartilhar em outros 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!

Editado por == Douplus ==
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...