Datei öffnen mit Abfrage Attribut
-
Hallo!
Ich möchte eine Datei öffnen zum Lesen.
Das Attribut ist also r!
Kann ich es auch vorher abfragen?
Wie muss ich es der Funktion fopen übergeben?Thx!
-
Deine Frage ist nicht verständlich.
-
Zero_Clamping schrieb:
Kann ich es auch vorher abfragen?
Wie muss ich es der Funktion fopen übergeben?Zu 1. mit stat(2)
Zu 2. wenn du eine Datei zum Lesen öffnen willst, auf die du kein Zugriff hast, gibt fopen einen Null-Pointer zurück.
FILE *fp; if ( ( fp = fopen(dateiname, "r") ) == NULL ) { // Öffnen nicht möglich } else { // Datei geöffnet }
-
+-------------------+ .:\:\:/:/:. | PLEASE DO NOT | :.:\:\:/:/:.: | FEED THE TROLLS | :=.' - - '.=: | | '=(\ 9 9 /)=' | Thank you, | ( (_) ) | Management | /`-vvv-'\ +-------------------+ / \ | | @@@ / /|,,,,,|\ \ | | @@@ /_// /^\ \\_\ @x@@x@ | | |/ WW( ( ) )WW \||||/ | | \| __\,,\ /,,/__ \||/ | | | jgs (______Y______) /\/\/\/\/\/\/\/\//\/\\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\/\ ==============================================================
-
*lol*
-
Danke für den Troll!
Mein Ziel!
Ich frage das Attribut ab in einer Konsole (Einlesen von r)!
Danach soll mit fopen eine Datei geöffnet werden und im
2. Argument das r mitgegeben werden.
Wie geht das?
-
Zero_Clamping schrieb:
Danke für den Troll!
Mein Ziel!
Ich frage das Attribut ab in einer Konsole (Einlesen von r)!
Danach soll mit fopen eine Datei geöffnet werden und im
2. Argument das r mitgegeben werden.
Wie geht das?String einlesen (am Besten) mit fgets(), string vergleichen (ob Eingabe gültiger Modus ist) mit strcmp() und dann den String als Argument übergeben. Evtl. nochmal ein Tutorial lesen.
-
#include <stdio.h> #include <conio.h> int main(int argc, char *argv[]) { FILE *stream; char cAttribut; printf("\nAttribut>"); scanf("%c",&cAttribut); stream = fopen("C:\\Lesen.txt", cAttribut); if (stream == NULL) { printf("\nDatei konnte nicht geoeffnet werden!"); exit(1); getch(); } fclose(stream); getch(); return 0; }
Hier gibt es Probleme
bei fopen!
Weiss jemand wieso und wie cAttribut richtig übergeben werden muss
-
Das muss ein String sein, kein einzelnes Zeichen. Deswegen schrieb ich auch fgets() und strcmp()...
-
Ist das Attribut r aber nicht ein einzelnes Zeichen? Und somit ein char?
-
Nein, es ist ein String der aus den Zeichen 'r' und '\0' besteht. Auch genannt "r". Schau doch bitte in einer Referenz (manpage oder so) nach. Da steht eindeutig, dass das Argument ein char* ist, also ein String.
-
GENAU:
UNTERSCHIED CHAR UND CHAR * beachten!
DANKESCHÖN @ ALL!
-
So sollte es klappen
#include <stdio.h> #include <conio.h> int main(int argc, char *argv[]) { FILE *stream; char cAttribut[2]; printf("\nAttribut>"); scanf("%c",&cAttribut[0]); cAttribut[1] = '\0'; stream = fopen("C:\\Lesen.txt", cAttribut); if (stream == NULL) { printf("\nDatei konnte nicht geoeffnet werden!"); getch(); // das vor exit sonst wird es nie erreicht exit(1); } fclose(stream); getch(); return 0; }
fopen will als 2. Parameter einen char*.