Datei einlesen funktioniert bis auf 1. Zeichen

Wu-mc

Mitglied
Hallo Forum,

ich habe ein Problem. Ich versuche eine Datei nach einem Muster zu parsen, was auch ganz gut funktioniert, bis auf das erste Zeichen. Die Datei beginnt mit 100... Versuche ich die Datei ab dem zweiten Zeichen einzulesen dann bekomme ich die zwei 00. Will ich aber das erste Zeichen bekomme garnichts.

Also ändere ich
Code:
const int cols[] = {0,3,...
in
Code:
const int cols[] = {1,3,...
steht hinterher in kunde[0] 00, ansonsten steht garnichts drin. Ich dachte schon das am Anfang der Zeile vielleicht ein Escape Zeichen oder sowas steht, aber dann müsste die 1 ja als nächstes Zeichen eingelesen werden.

Hier noch der komplette Code:
Code:
	const int cols[] = {0,3,6,8,16,24,31,34,37,44,52,61,69,72,92,112,117,137,157,177,197,217,237,239,240,242};
	char kunde[rows][maxwidth];

	lfdnr++;

	int i=0, j=0, k=0, laenge;
	char buf[1024];

	FILE *input = fopen("\\Storage Card\\daten.txt", "r");

	do 
	{
		buf[i]=fgetc(input);
		i++;
		if (buf[i-1]=='\n')
		{
			j++;
			i=0;
		}
	} while (j!=lfdnr);
	buf[i]=0;

	for (j=0; j<rows; j++)
	{
		for (k=0, i=cols[j]; i<cols[j+1]; k++, i++)
		{
			kunde[j][k] = buf[i];
			kunde[j][k+1] = 0;
		}
		
	}

Kann das jemand nachvollziehen?

Falls es wichtig ist: Es handelt sich um einen Pocket PC mit WindowsCE.
 
Hi,
ich schlag mich ebenfalls mit CE rum. Dein Problem kommt aber vermutlich nicht aus der CE Welt.
Falls du embedded VS c++ 4.0 nutzt schau doch einfach mal in den Debugger
nutz mal statt fgetc fgets das liesst automatisch ne ganze zeile bzw ne bestimmte zahl an zeichen, da gab es bis jetzt noch keine Probleme mit und der Code wird einfacher:-)

Gruss Michael
 
In deiner Leseschleife setzt Du i=0 wenn ein Zeilenumbruch erreicht wird:

Code:
		buf[i]=fgetc(input);
		i++;
		if (buf[i-1]=='\n')
		{
			j++;
			i=0;
		}

Danach setzt du

Code:
buf[i]=0;

So, jetzt die Preisfrage. Warum ist buf[0] wohl 0 ?
 
Zurück