Integer in Char[] Array umwandeln
-
Erstmal danke für deine umfangreiche Antwort.
Ich habe den Code noch mal ausprobiert, jetzt klappt alles, aber der Effekt bleibt aus.
Er sagt:
"Rename error: No such file or directory"
PS.: Ich habe auf'm Desktop sehr wohl eine Datei namens "data.txt" angelegt...
#include <string> #include <sstream> #include <iostream> #include <ctime> #include <cstdio> #include <cstdlib> int main() { std::srand(std::time(0)); int random = std::rand() % 32767 + 1; std::string folder = "C:\\Users\\***\\Desktop\\"; std::string oldname = folder + "data.txt"; std::ostringstream oss; oss << folder << random << ".txt"; std::string newname = oss.str(); std::cout << newname << std::endl; std::cout << oldname << std::endl; int err = std::rename(oldname.c_str(), newname.c_str()); if(err) { std::perror("Rename error"); std::cin.get(); } else { std::cout << "Success! New path: " << newname << std::endl; std::cin.get(); } return 0; }
-
Es steht doch hoffentlich nicht wirklich *** in deinem Pfad?
-
Braunstein schrieb:
Es steht doch hoffentlich nicht wirklich *** in deinem Pfad?
Nein.
-
skullyan schrieb:
Braunstein schrieb:
Es steht doch hoffentlich nicht wirklich *** in deinem Pfad?
Nein.
Stimmt auch der restliche Pfad? Bist du ganz sicher? Überprüfe es lieber nochmals dreimal mit voller Konzentration.
Grüssli
-
Dravere schrieb:
skullyan schrieb:
Braunstein schrieb:
Es steht doch hoffentlich nicht wirklich *** in deinem Pfad?
Nein.
Stimmt auch der restliche Pfad? Bist du ganz sicher? Überprüfe es lieber nochmals dreimal mit voller Konzentration.
Grüssli
Tut er es denn nicht? Wenn ja, bitte ich um Korrigierung, denn ich finde wirklich keinen Fehler... Bis auf meinen Benutzernamen sollte es in Windows ja normal sein...
-
skullyan schrieb:
Tut er es denn nicht? Wenn ja, bitte ich um Korrigierung, denn ich finde wirklich keinen Fehler... Bis auf meinen Benutzernamen sollte es in Windows ja normal sein...
Es ist überall ein wenig anders. Ja nach Windows oder Sprache. Zudem gibt es auch mehrere Desktops, für jeden User halt und meistens noch ein allgemeiner.
Bei mir sähe der Pfad so aus:
C:\Dokumente und Einstellungen\***\Desktop\Wobei *** durch mein Name zu ersetzen wäre. Und bei mir funktioniert der Code, wenn alles richtig angegeben wurde
Grüssli
-
Dravere schrieb:
skullyan schrieb:
Tut er es denn nicht? Wenn ja, bitte ich um Korrigierung, denn ich finde wirklich keinen Fehler... Bis auf meinen Benutzernamen sollte es in Windows ja normal sein...
Es ist überall ein wenig anders. Ja nach Windows oder Sprache. Zudem gibt es auch mehrere Desktops, für jeden User halt und meistens noch ein allgemeiner.
Bei mir sähe der Pfad so aus:
C:\Dokumente und Einstellungen\***\Desktop\Wobei *** durch mein Name zu ersetzen wäre. Und bei mir funktioniert der Code, wenn alles richtig angegeben wurde
Grüssli
Ich krieg langsam die Krise:
#include <string> #include <sstream> #include <iostream> #include <ctime> #include <cstdio> #include <cstdlib> int main() { std::srand(std::time(0)); int random = std::rand() % 32767 + 1; std::string folder = "C:\\"; std::string oldname = folder + "data.txt"; std::ostringstream oss; oss << folder << random << ".txt"; std::string newname = oss.str(); std::cout << newname << std::endl; std::cout << oldname << std::endl; int err = std::rename(oldname.c_str(), newname.c_str()); if(err) { std::perror("Rename error"); std::cin.get(); } else { std::cout << "Success! New path: " << newname << std::endl; std::cin.get(); } return 0; }
Nicht mal so klappt es...
-
Was klappt nicht, kommst du in den
else
-Zweig? Hast du den Pfad auch mal genau angeschaut (zum Beispiel Zeichen für Zeichen)? Was sagt dennperror()
?Ich würde übrigens eher einen einfachen Slash / verwenden als einen Backslash mit Escape-Sequenz, das ist plattformunabhängiger.
-
Nexus schrieb:
Was klappt nicht, kommst du in den
else
-Zweig? Hast du den Pfad auch mal genau angeschaut (zum Beispiel Zeichen für Zeichen)? Was sagt dennperror()
?Ich würde übrigens eher einen einfachen Slash / verwenden als einen Backslash mit Escape-Sequenz, das ist plattformunabhängiger.
Ja, habe ich. Nein er kommt in den
if
-Zweig.perror
sagt: "No such file or directory"PS.: Der Slash "/" hat nicht geklappt. Es kam der UNIX-Slash raus. Wie geht das?
-
Also stimmt der Pfad nicht. Überprüfe den String nochmals, evtl. mit dem Debugger.
Und wie meinst du das mit dem UNIX-Slash?
-
Es geht jetzt. Was für'n dummer Fehler von mir -.-
Früher hatte ich Dateiendungen an. Seit ich sie ausgestellt habe, bin ich wohl etwas verwirrt, so hieß die Datei, die ich erstellte, "data.txt.txt".
Nexus schrieb:
Und wie meinst du das mit dem UNIX-Slash?
Der Backslash wird ja von Microsoft benutzt. Der "normale" Slash hingegen halt von UNIX-Systemen.
-
skullyan schrieb:
Früher hatte ich Dateiendungen an. Seit ich sie ausgestellt habe, bin ich wohl etwas verwirrt, so hieß die Datei, die ich erstellte, "data.txt.txt".
Ich sagte ja dreimal ganz konzentriert. Es MUSSTE einfach am Pfad liegen
skullyan schrieb:
Der Backslash wird ja von Microsoft benutzt. Der "normale" Slash hingegen halt von UNIX-Systemen.
Der Slash funktioniert auch auf Windows, ist nur vielen nicht bekannt. Sofern du nicht an Abwärtskompatibilität bis in DOS hinein interessiert bist, kannst du auch den Slash nehmen.
@Nexus,
Platformunabhängiger ... mit "C:" ist er schon völlig von Windows abhängig :pGrüssli
-
Dravere schrieb:
skullyan schrieb:
Früher hatte ich Dateiendungen an. Seit ich sie ausgestellt habe, bin ich wohl etwas verwirrt, so hieß die Datei, die ich erstellte, "data.txt.txt".
Ich sagte ja dreimal ganz konzentriert. Es MUSSTE einfach am Pfad liegen
skullyan schrieb:
Der Backslash wird ja von Microsoft benutzt. Der "normale" Slash hingegen halt von UNIX-Systemen.
Der Slash funktioniert auch auf Windows, ist nur vielen nicht bekannt. Sofern du nicht an Abwärtskompatibilität bis in DOS hinein interessiert bist, kannst du auch den Slash nehmen.
@Nexus,
Platformunabhängiger ... mit "C:" ist er schon völlig von Windows abhängig :pGrüssli
Man lernt immer dazu...