• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Linux API (opendir,usw) mit wchar_t*

SuseOpfer

Newbie
Ich schon wieder:p

Ich habe eine Frage zur generellen Linux/Unix C Programmierung.
Ich portiere gerade ein paar kleine Utilities und bin auf folgendes Problem gestossen:

Es geht darum den Inhalt eines Verzeichnisses auszulesen:
Unter Windows würde ich Funktionen wie FindFirstFile verwenden.
Wir verwenden normalerweise wchar_t* für Strings und die Windows API liefert gleich die passenden Funktionen wie FindFirstFileW dazu.

Jetzt habe das Linux-Äquvivalent für diese API-Aufrufe hier(ist aus einem Beispiel kopiert und macht keinen Sinn aber das ist für die Frage egal):

Code:
   		DIR *dirptr;
   		struct dirent *dir;
   		if ((dirptr=opendir(path)) == NULL)
      			return;
   		while((dir=readdir(dirptr)) != NULL)
		{
      			printf("%s\n",dir->d_name);
		} // endwhile
   		closedir(dirptr);

Wie kann ich jetzt opendir readdir usw. dazu bewegen wchar_t* Datentypen zu verwenden? Geht das über Compiler-Switches über spezifische Includes oder was auch immer. Oder garnicht? Oder muss ich alle wchar_t strings in char konvertieren?[/code]

P.S.: verwende gcc/g++ 4.1.0
 
Gar nicht. Du musst deinen wchar_t* String nach char* konvertieren, entweder mithilfe der mb-Funktionen oder mit iconv(). Letzteres ist das flexiblere, da du gleich in ISO8859-1 oder wahlweise UTF-8 (je nach Betriebssystem/Distribution) wandeln kannst.
 
Oben