Portál AbcLinuxu, 10. května 2024 13:50


Dotaz: Zápis do souboru (náhodná pozice) C

22.5.2010 10:52 Okallasch | skóre: 1
Zápis do souboru (náhodná pozice) C
Přečteno: 381×
Odpovědět | Admin
Dobré dopoledne. Prosim vás může mi někdo poradit jak udělat funkci v C, kterou budu zapisovat do souboru řetězec, ale ne na začátek a konec ale třeba za 68 bit? Díky za rady. Ještě upozornuju, že ta pozice bitů nebude stále 68.

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Řešení 2× (jka, 12345)
22.5.2010 11:47 Martin Tůma | skóre: 39 | blog: RTFM | Praha
Rozbalit Rozbalit vše Re: Zápis do souboru (náhodná pozice) C
Odpovědět | | Sbalit | Link | Blokovat | Admin

man fseek

Každý má právo na můj názor!
22.5.2010 17:47 finn | skóre: 43 | blog: finnlandia | 49° 44´/13° 22´
Rozbalit Rozbalit vše Re: Zápis do souboru (náhodná pozice) C
Odpovědět | | Sbalit | Link | Blokovat | Admin
Možností je víc, nejprv si ale udělej jasno v pojmech bit a bajt.
#include <stdio.h>
#include <string.h>
#include <errno.h>

int main(void)
{
  FILE *out;
  char text[] = "Ahoj!";
  int rv;

  if((out = fopen("soubor.dat", "w")) == NULL)
  {
    fprintf(stderr, "Chyba při otvírání souboru: %s\n", strerror(errno));
    rv = 1;
  }
  else
  {
    fseek(out, 68, SEEK_SET);
    if(fwrite(text, strlen(text), 1, out) == 1)
    {
      rv = 0;
    }
    else
    {
      rv = 2;
    }
  }

  return rv;
}
Nebo existuje druhá možnost:
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>

int main(void)
{
  int out;
  char text[] = "Ahoj!";
  int rv;

  if((out = open("soubor.dat", O_WRONLY)) == -1)
  {
    fprintf(stderr, "Chyba při otvírání souboru: %s\n", strerror(errno));
    rv = 1;
  }
  else
  {
    lseek(out, 68, SEEK_SET);
    if(write(out, text, strlen(text)) != strlen(text))
    {
      rv = 0;
    }
    else
    {
      rv = 2;
    }
  }

  return rv;
}
Užívej dne – možná je tvůj poslední.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.