S
iZeichen = fgetc(stream); //Zeichen einlesen
puffer[i] = iZeichen;//Zeichen in Puffer schreiben
warum nicht
puffer[i]=fgetc(stream) ??
Hab ich mir zuerst auch ueberlegt. Doch wenn ich weiter unten pruefen will ob der Datensatz fertig ist (\n), kann ich das einfach mit iZeichen pruefen. in puffer[i] hab ich dann das letzte eingelesene Zeichen schon geloescht.
Das ganze sieht etwa so aus
void fileauf ()
{
FILE *myFile;
char puffer[200];
int iZeichen, i, zSpalten, datensatz = 0;
myFile = fopen("testfile.txt", "r");
zSpalten = 1;
do //mach bis fileende
{
i = 0; //index fuer puffer
do //mach solang bis an ein tab, ein zeilenumbruch oder bis fileende
{
iZeichen = fgetc(myFile); //Einzelnes Zeichen einlesen, in int var speichern
puffer[i] = iZeichen; //und dieses Zeichen in einen char buffer schreiben
i++;
} while (iZeichen != '\t' && iZeichen != '\n' && iZeichen != EOF);
puffer[i - 1]= '\0'; //den string abschliesen
switch (zSpalten) //zaheler fuer Filespalten
{
case 1:
strcpy (eingabe[datensatz].frage, puffer);
break;
case 2:
strcpy (eingabe[datensatz].Antwort1, puffer);
break;
case 3:
strcpy (eingabe[datensatz].Antwort2, puffer);
break;
case 4:
strcpy (eingabe[datensatz].Antwort3, puffer);
break;
case 5:
strcpy (eingabe[datensatz].Antwort4, puffer);
break;
case 6:
strcpy (eingabe[datensatz].Antwort5, puffer);
break;
case 7:
//puffer[0] liefert ASCII Zeichen
switch (puffer[0])
{
case 49:
eingabe[datensatz].loesung = 1;
break;
case 50:
eingabe[datensatz].loesung = 2;
break;
case 51:
eingabe[datensatz].loesung = 3;
break;
case 52:
eingabe[datensatz].loesung = 4;
break;
case 53:
eingabe[datensatz].loesung = 5;
break;
}
break;
}
zSpalten++;
if (iZeichen == '\n') // '\n' gleich Datensatzende
{
datensatz++; //naechster Datensatz
zSpalten = 1; //Spaltenzaehler auf eins setzen
}
} while (!feof (myFile));
fclose(myFile);
ausgabe (datensatz); //Funktionsaufruf
}
Geht es eigentlich auch anders wenn man einer int Variablen einen Wert von einer char Variablen zuweisen will. Ich hab hier switch genommen und es aufgeteilt. Nicht sehr optimal finde ich, aber es lauft.