2016-10-07 4 views
-1

Ich lese in einer XML-Datei in C-Code. Ich erhalte den Dateinamen der XML-Datei von der Befehlszeile pro Benutzeroption. Wenn mein Dateiname beispielsweise "TestName.xml" ist, wird es auch funktionieren, wenn der Benutzer "testname.xml" als Befehlszeilenoption angibt, da keine Groß- und Kleinschreibung beachtet werden muss.Get Dateiname Groß-und Kleinschreibung

Aber in meinem Fall habe ich ein Problem damit. Ich möchte eine Header-Datei "TestName.h" aus der XML-Datei generieren und wie Sie sehen, sollte der Name immer case sentive identisch sein.

Mein Problem ist jetzt, ich benutze den Text von der Befehlszeilenoption und wenn der Benutzer "testname.xml" eingibt, wird der Name meiner Header-Datei auch nur kleinere Fälle haben.

Ich möchte eine der folgenden Lösungen haben: 1. ich die richtige Groß- und Kleinschreibung Dateinamen irgendwie lesen kann, wenn auch der Benutzer es sonst 2. fopen_s() sollte nur Fall arbeiten empfindliche

Lösung 2 sollte nur eine Option sein, wenn es keine Lösung für Lösung 1 gibt.

Vielen Dank für Ihre Hilfe!

+3

Die Antwort wäre je nach Betriebssystem sehr unterschiedlich. Möglicherweise möchten Sie diese Informationen zur Frage hinzufügen. –

+0

Suchen Sie die Funktion stat(). Wenn es verfügbar ist, könnte es tun, was Sie wollen. Letztendlich kommt es jedoch auf das Betriebssystem an, wenn es Dateinamen erlaubt, bei denen die Groß-/Kleinschreibung nicht berücksichtigt wird, ist das Konzept des "echten Falls" möglicherweise schwierig. –

+0

Ich verwende Visual Studio 2010 unter Windows 7 64Bit – phvoit

Antwort

0

Dank Karsten, in der Zwischenzeit ich eine Lösung gefunden, ich glaube, es ist ähnlich wie Sie ein:

std::string strSochIn("/path/text.xml"); 
WIN32_FIND_DATAA wfd; 

HANDLE hFind = ::FindFirstFileA(strSochIn.c_str(), &wfd); 
if (hFind != INVALID_HANDLE_VALUE) 
{ 
    strSochIn = wfd.cFileName; 
} 
else 
{ 
    //Error 
} 

Ich weiß nicht, was ist der Unterschied zwischen Findfirstfile und FindFirstFileA, aber ich don‘ Ich denke, es gibt einen großen Unterschied ...