Posun v textovom súbore – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Posun v textovom súbore – C / C++ – Fórum – Programujte.comPosun v textovom súbore – C / C++ – Fórum – Programujte.com

 

gaben0
Stálý člen
26. 1. 2010   #1
-
0
-

Zdarte. Potrebujem zapisovať na koniec prvého riadku v súbore (počet znakov nie je konštantný). Napísal som funkciu, ktorá zistí, koľko znakov má tento prvý riadok a potom sa pomocou funkcie fseek() posúvam a príslušný počet bajtov. Nefunguje to však tak, ako by som potreboval, ono to totiž čiastočne prepíše aj slovo z ďalšieho riadku a presunie ho do prvého riadku. (ak niekto pozná lepšie riešenie tak pls dajte vedieť)

Kód:



#include <stdio.h>

int zistiPocetZnakov(FILE *fr);

int main()
{
FILE *fr, *fw;

fr = fopen("subor.txt", "r");
fw = fopen("subor.txt", "r+");
fseek(fw, (long) (zistiPocetZnakov(fr) * sizeof(char)), SEEK_SET);

fclose(fr);

fprintf(fw, "TU");
printf("HOTOVO\n");
fclose(fw);

getchar();
return 0;
}

int zistiPocetZnakov(FILE *fr)
{
int pocetZnakov = 0;
char znak;

do {
znak = getc(fr);
pocetZnakov++;
} while (znak != '\n');

return pocetZnakov;
}


Ďalej by som ešte potreboval vediet ako vymazať nejaký reťazec z textového súboru.
Thx.

Nahlásit jako SPAM
IP: 85.237.12.–
C, C++
_Radek_
~ Anonymní uživatel
88 příspěvků
26. 1. 2010   #2
-
0
-

Nevim jestli existuje lepsi zpusob, ale tak me napadlo, zkopirovat si nekam zbytek souboru za prvnim radkem, potom presunout kurzor, zapsat co chces, a potom znova zapsat data, ktere sis zkopiroval ...

Nahlásit jako SPAM
IP: 91.187.60.–
gaben0
Stálý člen
26. 1. 2010   #3
-
0
-

_Radek_: To ma tiež napadlo, ale mám to pripravené len ako krajné riešenie, keď to nepôjde spraviť nijak efektívnejšie. Totiž toto riešenie by bolo časovo aj pamäťovo o dosť náročnejšie ako to moje prvé, a tiež by to bolo dosť komplikované.

Nahlásit jako SPAM
IP: 85.237.12.–
C, C++
KIIV
~ Moderátor
+43
God of flame
26. 1. 2010   #4
-
0
-

To gaben : pracuj s tim jako s binarnim souborem.. zadny enter.. ktery muze byt jeste 1 nebo 2 znaky

Nahlásit jako SPAM
IP: 80.250.1.–
Program vždy dělá to co naprogramujete, ne to co chcete...
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 53 hostů

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý