TCHAR nach Datei schreiben
-
Hallo!
Ich versuche ein (zweidimensionales) TCHAR-Array in eine Datei zu schreiben, da kommt aber nur Müll bei raus. Wie geht das?
-
dateiname = L"main2.txt"; datei = CreateFile(dateiname, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); WriteFile(datei, unicodeheader, strlen(unicodeheader), &byteswritten, 0); TCHAR *str; for (i = 0; *(srcbuffer+i)!=0; i++) { str = *(srcbuffer + i); WriteFile(datei,str, lstrlen(str), &byteswritten, 0); WriteFile(datei, L'\n', 2, &byteswritten, 0); } CloseHandle(datei);
-
Ich habe es selbst hinbekommen.
Falls irgendjemand mal ein ähnliches Problem haben sollte:
1. der unicodeheader (0xFF,0xFE) muss mit 0 abgeschlossen werden wie alle Strings.
2. WriteFile schreibt byteweise, das heißt: der Rückgabewert von lstrlen muss mit 2 multipliziert werden
3. für den Zeilenumbruch muss "\r\n" verwendet werden.Am Ende sieht es dann so aus:
dateiname = L"main2.txt"; datei = CreateFile(dateiname, GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0); WriteFile(datei, unicodeheader, strlen(unicodeheader), &byteswritten, 0); for (i = 0; *(srcbuffer+i)!=0; i++) { TCHAR *str = *(srcbuffer + i); WriteFile(datei,str, 2*lstrlen(str), &byteswritten, 0); WriteFile(datei, L"\r\n", 4, &byteswritten, 0); } CloseHandle(datei);
-
Tchar sind Projektabhängig. Benutz doch gleich wchar_t.