Jump to content
Fórum Script Brasil
  • 0

Dúvida em c


Lucaslrt

Question

Olá pessoal.

Eu gostaria de saber se tem algum jeito de eu fazer uma alteração em um arquivo de texto sem eu ter que, ou perder todos os outros dados do arquivo ou ter que regrava-los depois.

Por exemplo, no meu arquivo de texto está escrito:

"15

pessoa 003"

ai eu gostaria de modificar para:

"16

pessoa003"

sem ter que copiar tudo, exceto o que eu quero modificar, para regravar depois.

E ai? Será que tem jeito? Agradeço desde já.

Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 0

Olá,

Tem como fazer isso sim.

A única restrição é que você só vai poder sobrescrever o mesmo número bytes, por exemplo:

Se no arquivo a ser reescrito consta (sem aspas):

"15\npessoa003"

Você poderá reescrever a partir do início do arquivo (sem prejudicar o 'pessoa003'):

"16\npessoa003",

pois o que foi escrito (16) tem o mesmo número de bytes do que estava lá (15).

Entretanto, se você tentar escrever algo com número de bytes maior do que aquilo que estava lá, o 15, o resto do arquivo será prejudicado, isto é, o 'pessoa003' vai ser, pelo menos em parte, sobrescrito também.

Segue o código:

#include <stdio.h>

int main (int argc, char *argv[]) {
    int p = 16;
    FILE *arquivo = fopen("arquivo.txt", "r+");

    fprintf(arquivo, "%d", p);
    fclose(arquivo);
    return 0;
}

Nota: arquivo.txt tem o seguinte conteúdo:

15

pessoa003

Link to comment
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.



  • Forum Statistics

    • Total Topics
      152.2k
    • Total Posts
      652k
×
×
  • Create New...