Mi a hiba? Begépeltem ezt a Free Pascal programot. Valamiért, a szöveges fájlból való olvasásnál a hatodik betű mindig N.
program fajlos;
uses crt;
var f : text;
s : string;
a : integer;
begin
a := 6;
assign(f,'proba.txt');
rewrite(f);
writeln('Irja be a nevet.');
repeat
readln(s);
writeln(f,'Name:',s);
Until s<>'';
close(f); {használat után bezárjuk}
write('Welcome:');
reset(f); {mivel ugyanaz a fájl nem szükséges újra hozzárendelni}
{a lényeg, hogy előzőleg bezártuk!!!}
while (NOT EOF(F)) do begin
readln(f,s[a]);
writeln(s);
a := a + 1;
end;
close(f);
writeln('...es ennyi uss entert!');
readln;
end.
Jól látom, hogy a sztring változót a 6-dik karaktertől kezded el feltölteni? A korábbi karakterek mik lesznek?
A másik, hogy ha karakterenként töltesz fel egy sztringet, akkor a hosszát is állítani kell, mert ha jól tudom, a pascal a 0. elem helyén tárolja a hosszát, nem a végén lévő nulla karakterrel jelzi, mint a C.
Így oldanám meg.
program fajlos;
uses crt;
var f : text;
s : string;
a : integer;
ch:char;
begin
a := 1;
ch := 'N';
assign(f,'proba.txt');
rewrite(f);
writeln('Irja be a nevet.');
repeat
readln(s);
writeln(f,'Name:',s);
Until s<>'';
close(f); {használat után bezárjuk}
write('Welcome:');
reset(f); {mivel ugyanaz a fájl nem szükséges újra hozzárendelni}
{a lényeg, hogy előzőleg bezártuk!!!}
while (ch in ['N','a','m','e']) do read(f, ch);
while (NOT EOF(F)) do begin
read(f,s[a]);
inc (a);
end;
close(f);
writeln(s);
writeln('...es ennyi uss entert!');
readln;
end.
Amúgy miért a "s" 6.-ik karakterétől kezdesz egy beolvasni?
Kösz a segítséget. Azért a hatodiktól kell beolvasni, mert a szövegesfájlban ez áll:
Name:XXXX
Nekem csak az XXXX kell.
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!