You are not logged in.

  • Login

Dear visitor, welcome to Coder Forum. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

1

Monday, July 11th 2011, 3:02pm

datei auslesen

hallo,

ich habe eine datei in der datensätze abgelegt werden. diese datensätze will ich in einem Nummernbereich auslesen. soweit so gut. den unten angefügte code funktoniert auch soweit. aber warum muss ich die leseposition zweimal zurücksetzen um die daten vortlaufen ausgegeben zu bekommen?

ohne das doppelte fseek wird mir immer nur jeder zweite eintrag gezeigt.... habe ich in dem code einen fehler? sodass der immer einen datensatz überspringt?

C/C++ Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
void daten_del (FILE *ufp, Satztyp usatz, int low, int high)
{
	fseek(ufp, 0, SEEK_SET);
	fread(&usatz, sizeof(usatz),1,ufp);
 
	while(!feof(ufp))
	{
		if (usatz.a_nummer >= low && usatz.a_nummer <= high){
			fseek(ufp, -((long)sizeof(usatz)) ,SEEK_CUR);
			fseek(ufp, -((long)sizeof(usatz)) ,SEEK_CUR);
			printf("ArchivNr.: %d\n", usatz.a_nummer);
			printf("Interpret: ");
			puts(usatz.interpret);
			printf("Titel: ");
			puts(usatz.titel);
			printf("del?\n0=keine aktion ; 1=del :");
			fflush(stdin);
			gets(&usatz.LK);
			fwrite(&usatz, sizeof(usatz), 1, ufp);
			fseek(ufp, sizeof(usatz),SEEK_CUR);
		}
		fread(&usatz, sizeof(usatz),1,ufp);
	}
}

2

Monday, July 11th 2011, 8:40pm

Ich habe das nur kurz überflogen, aber ich glaube deine beiden fread und fwrites schieben den cursor weiter und das seekst du dann am Anfang des if-blocks zurück

Social bookmarks