Pawn (C/C++/C#) -ban az fseek () függvényről gőzöm nincs miért csinál ilyet?
Nyelv: Pawn, de ha jól tudom a fájlkezelés hasonló (mivel a pawn C/C++ -ban íródott)
Az fseek() függvény ugye pozicionál a fájlban.
Az fread() függvény visszatér a beolvasott karakterek számával, az fwrite() pedig a kiírt karakterek számával. A következő kódpéldában pedig a strfind() -os kritériumos rész CSAK AKKOR hajtódik végre ha a temp sztringben NINCS MEG a keresett literal ("" jelekkel megadott) sztring.
Az alapvető cél h a megkeresett sztring sorát átírjuk
#include <file>
#include <string>
main()
{
new File: f;
f = fopen( "test1.txt" );
new temp[ 128 ];
new offset;
while((offset = fread( f, temp ))) // Double brackets to avoid unintended assignment warning
{
if( strfind( temp, "string what i search for", false ) != -1 )
{
fseek( f, -offset, seek_current );
fwrite( f, "here is the string what I want to take to the line" );
}
}
fclose(f);
}
A könyvtárban található test1.txt eredeti tartalma futtatás előtt:
1. line: test1
2. line: second
3. line: pawn
4. line: scripting
5. line: forum
6. line: next line is the topic
7. line: so, string what i search for blablabla
8. line: plus 8th line
9. line: plus 9th line
10. line: the very last
11. EOF
Futtatás után (a futtatás le kell állítani mert végtelen ciklus jön elő, és az adott 3 sor leállításig folyamatosan íródik a fájlba):
1. line: test1
2. line: second
3. line: pawn
4. line: scripting
5. line: forum
6. line: next line is the topic
here is the string what I want to take to the line line: scripting
5. line: forum
6. line: next line is the topic
here is the string what I want to take to the line line: scripting
5. line: forum
6. line: next line is the topic
here is the string what I want to take to the line line: scripting
5. line: forum
6. line: next line is the topic
here is the string what I want to take to the line line: scripting
5. line: forum
6. line: next line is the topic
here is the string what I want to take to the line line: scripting
5. line: forum
6. line: next line is the topic
here is the string what I want to take to the line line: scripting
5. line: forum
6. line: next line is the topic
here is the string what I want to take to the line line: scripting
5. line: forum
6. line: next line is the topic
here is the string what I want to take to the line line: scripting
Nagyon fontos lenne nekem ez, pls akinek van vmi ötlete írjon :S
Köszönöm, Üdv
Le kéne kérni a megtalált sztring prozícióját, odamenni, és oda írni. Ehelyett azt csinálod, hogy visszaugrasz annyival, amennyit beolvasott a legutóbbi helyről kezdve, oda írsz. Nem veszed figyelembe, hogy a megtalált sztring valahol a puffer közepén is lehet.
Végül kialakul egy ciklus, hogy beolvas valamennyit, visszaugrik valamennyit, megint beolvas ugyanannyit, megint visszaugrik valamennyit blablalba, itt a végtelen ciklus.
Köszönöm a választ.
"Le kéne kérni a megtalált sztring prozícióját, odamenni, és oda írni. Ehelyett azt csinálod, hogy visszaugrasz annyival, amennyit beolvasott a legutóbbi helyről kezdve, oda írsz. Nem veszed figyelembe, hogy a megtalált sztring valahol a puffer közepén is lehet."
Értem, de ahogy a kérdésben írtam én azt a teljes sort át szeretném írni amiben van, ezért lépek vissza annyit amennyit beolvasott.
"Végül kialakul egy ciklus, hogy beolvas valamennyit, visszaugrik valamennyit, megint beolvas ugyanannyit, megint visszaugrik valamennyit blablalba, itt a végtelen ciklus."
De ez a ugrás-írás ahhoz a kritériumhoz van kötve h megtalálja a sorban - amit éppen átírunk másra, sőt az fwrite() a kurzorpozíciót viszi tovább tehát nem az lenne logikus ha a program a beírt sor utáni sorral folytatná az olvasást?
Nagyon köszönöm, üdv
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!