Wo bin ich? (C)

ollek81

Erfahrenes Mitglied
Tach!!

Wenn ich mit "fgetpos(fp,&pos)" die Position meines pointers in ner Datei lese, kann ich dann einfach "fsetpos(fp, &pos+3)" sagen, und der geht drei Zeichen (das ist hier möglich!!) in der selben Spalte der Datei weiter??

Oder geht das nicht, weil der von nem total anderen Typ ist?
Wie schaffe ich das sonst??
Nur mit fseek geht das glaub ich nicht, weil ich vorher fscanne und der dann ja immer ne Zeile nach dem Auslesen runter springt, ich aber in der selben Zeile (nach ner Überprüfung) weiterlesen will...

Wer weiß was???

MfG

Ollek81
 
Beantwortet dieses Beispiel Deine Frage?

/* FGETPOS.C: This program opens a file and reads
* bytes at several different locations.
*/

#include <stdio.h>

void main( void )
{
FILE *stream;
fpos_t pos;
char buffer[20];

if( (stream = fopen( "fgetpos.c", "rb" )) == NULL )
printf( "Trouble opening file\n" );
else
{
/* Read some data and then check the position. */
fread( buffer, sizeof( char ), 10, stream );
if( fgetpos( stream, &pos ) != 0 )
perror( "fgetpos error" );
else
{
fread( buffer, sizeof( char ), 10, stream );
printf( "10 bytes at byte %ld: %.10s\n", pos, buffer );
}

/* Set a new position and read more data */
pos = 140;
if( fsetpos( stream, &pos ) != 0 )
perror( "fsetpos error" );

fread( buffer, sizeof( char ), 10, stream );
printf( "10 bytes at byte %ld: %.10s\n", pos, buffer );
fclose( stream );
}
}
 
abend

verwende doch statt fsetpos() und fpos_t ganz einfach
fseek( *filepointer , sprung (zb. sizeof(schuler) * i) , SEEK_SET ) !

is wesentlich bequemer !
 
Hi Sabine!

Das hab ich jetzt auch gemacht! :)
Ich wollte das nur wissen, weil ich nen String auswerten musste, der sozusagen schon etwas "angeknabbert" war. Deswegen getpos()...
Ich musste nur wissen, ob die Variablen miteinander vereinbar sind.
Geht wunderbar!!

Danke!


ollek81
 
Zurück