<STRONG> /* Falls ich schon eine Datei durchsucht habe, ist nScnt > 0, da ich mit jedem Wort nScnt erhöhe. Folgendes mache ich, damit die Wörter die ich bereits
in die index.tmp.txt geschrieben habe (welche ich am ende in index.txt umbenannt habe), auch weiterhin in der Datei stehen, und der Rest nur angehängt wird */
if(nScnt>0)
{
nD = 2;
while(nD!=EOF)
{
nD = fgetc(FX);
szAusgelesenes[0] = nD;
fwrite(szAusgelesenes, sizeof(char), 1, FW);
}
fclose(FW);
fclose(FX);
FX = fopen(chB, "r");
FW = fopen(chA, "a+");
}[/code]</STRONG>
Hier liegt der Fehler. Wenn fgetc EOF (-1) zurückliefert, schreibst Du trotzdem noch ein Zeichen in die Datei. Dabei brichst Du den int, den fgetc geliefert hat, auf einen unsigned char herunter, so dass 255 übrig bleibt, was dem Y mit zwei Punkten entspricht.
Besser wäre:
while( EOF != ( nD = fgetc(FX) ) ) {...
Dann kannst Du Dir auch die Vorbelegung von nD sparen.
Ach ja, anstelle von fclose und anschließendem fopen kannst Du auch einfach fseek(FX, 0, SEEK_SET) benutzen.