Datei erstellen und Rechte ändern?
-
Hallo,
ich habe ein kleines C Programm geschrieben, um eine Textdatei zu erstellen.
Jetzt möchte ich noch die Rechte der Datei in 0700 ändern.
Leider weiß ich nicht wie das geht. Eventuell kann mir jemand helfen?#include <stdio.h> //using namespace std; int main(int argc,char *argv[]) { char str[30]; FILE* f ; printf("Geben Sie bis zu 30 zeichen ein \n"); fgets(str, 31 ,stdin); f = fopen(str,"w"); if (f == NULL){ perror("fopen"); } else { printf("Datei erzeugt \n"); } //system("PAUSE"); return 0; }
-
-
Habe das jetzt so gemacht:
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <sys/types.h> #include <sys/stat.h> //using namespace std; int main(int argc,char *argv[]) { char str[30]; FILE* f ; printf("Geben Sie bis zu 30 zeichen ein \n"); fgets(str, 31, stdin); f = fopen(str,"w"); if (f == NULL){ perror("fopen"); } else { printf("Datei erzeugt \n"); } char mode[] = "0700"; int i; i = strtol(mode, 0, 8); if (chmod (str, i) < 0) { printf("Error"); } //system("PAUSE"); return 0; }
Scheint zu funktionieren?
-
Nanana
char str[30]; // Platz für 29 Zeichen + '\0' printf("Geben Sie bis zu 30 zeichen ein \n"); // Wieviel Zeichen? Die '\0' gibst du nicht mit ein. fgets(str, 31, stdin); // Fehler! Soviel Platz hast du gar nicht.
Bedenke auch, dass
fgets
das '\n' (von der Entertaste) mit im String ablegt.
Dein Dateiname enthält also ein '\n'OPTIMUS schrieb:
//using namespace std;
Machst du jetzt C oder C++?
-
Das soll ein C Programm werden.
Ich darf maximal 30 Zeichen für den Dateinamen eingeben.
-
Dann mach einfach
char str[32]; // dateiname passt besser
dann kann der Rest bleiben.
Die Position vom '\n' kannst du mit strrchr ermitteln.