Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Escrita no arquivo txt

Eu não entendi como no primeiro fprintf ele substituiu o numero, e no segundo fprintf ele acrescentou a palavra, não substituiu. Eu entendi o codigo mas não a logica como o programa sabe que é pra substituir ou acrescentar, ele so acrescenta no final? e no inicio substitui?

void adcionapalavra(){

    char quer;
    
    printf("Voce quer adicionar uma nova palavra ao jogo? (S/N)");
    scanf(" %c", &quer);
    if(quer == 'S'){
        char novapalavra[20];
        printf("digite a nova palavra do jogo\n");
        scanf("%s", novapalavra);
        FILE* f;
        f = fopen("palavra.txt", "r+");
        if(f == 0){
            printf("Desculpa, arquivo não encontrado");
            exit(1);
        }

        int qtd;

        fscanf(f, "%d", &qtd);
     
        qtd++;

        fseek(f, 0, SEEK_SET);     
        fprintf(f, "%d", qtd);

        fseek(f, 0, SEEK_END);
l       
        fprintf(f, "\n%s", novapalavra);


        fclose(f);

    }
}
1 resposta
solução!

Olá Markus! Como vai?

Vou tentar esclarecer melhor esse tema para você trazendo em dois pontos:

  1. Substituição: No seu código, o primeiro fprintf(f, "%d", qtd); substitui o número no início do arquivo porque você reposicionou o ponteiro do arquivo para o início com fseek(f, 0, SEEK_SET);. Isso significa que qualquer coisa escrita a partir desse ponto irá sobrescrever o conteúdo existente. Então, quando você escreve o novo valor de qtd, ele substitui o antigo número que estava no começo do arquivo.

  2. Adição: Já o segundo fprintf(f, "\n%s", novapalavra); adiciona a palavra ao final do arquivo porque você reposicionou o ponteiro do arquivo para o final com fseek(f, 0, SEEK_END);. Isso faz com que qualquer coisa escrita a partir desse ponto seja anexada ao final do arquivo, sem substituir o conteúdo existente.

Portanto, a diferença entre substituir e adicionar está na posição do ponteiro do arquivo, que você controla com a função fseek. Ao mover o ponteiro para o início ou para o final do arquivo, você decide onde a escrita ocorrerá.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.