[Frage] Warum findet er die Text- Datei nicht?



  • Guten Tag Zusammen

    Ich habe ein kleines Problem mit meinem Programm, welches ich während meiner Ausbildung machen muss.

    Mit diesem Programm soll man Noten einlesen/ausgeben können.
    Die Eingelesenen Daten sollen dann in einer Text-Datei abgespeichert werden.

    Das Einlesen & speichern klappt soweit wunderbar, jedoch wenn ich die abgespeicherten Daten wieder auslesen möchte findet es die Datei nicht.

    Könnt Ihr mir sagen was ich falsch mache?

    Hier der Code zum Einlesen:

    #include <stdio.h>
    #include <stdlib.h>
    
    void main(){
    char dateiname [10],choice; //Globale Variablen;
    float noten = 0.00;
    		FILE *f;	
    			printf("Bitte geben Sie den Namen der Pruefung ein \n"); // Dieser Abschnitt ist dafür gedacht, das FILE zu öffnen
    			gets(dateiname); 
    			f = fopen(&dateiname,"a");                                 
    
    		do{   //Loop für Noteneingabe [Verlassen des Loops mit X]
    			printf("Bitte geben Sie eine Note ein\n");
    			scanf("%f", &noten);
    			printf("Sie haben %.1f eingegeben\n\n", noten);
    			printf("Wenn Sie alle Noten eingegben haben drücken Sie [X]\n");
    			scanf("%c", &choice);
    
    				 if(noten <1 || noten >6){
    				 printf("Ungueltige Eingabe\n");
    				 continue;
    				}
    				fprintf(f,"%.1f\n", noten);
    		}while(choice !='x' );
    		fclose(f);
    return 0;						
    			}
    

    Und hier der Code zum Auslesen:

    #include <stdio.h>
    #include <stdlib.h>
    
    void main(){
    char choice, dateiname [10];
    int i =10;
    float noten = 0.00, file;
    		FILE *f;	
    			printf("Bitte geben Sie den Namen der Pruefung ein \n");
    			gets(dateiname);
    				if(f == NULL){
    					printf("Datei nicht gefunden");
    				}else{
    				do{
    					file = 0;
    					fscanf(f, "%f\n", &file);
    				if(file > 0){
    					printf("%f\n", file);}
    				}while(file!= 0);{
    				}
    					fclose(f);
    				}
    }
    


  • Habe den Fehler jetzt gerade selbst gefunden :p :p :p

    Mir fehlte beim Einlesen das öffnen der Datei.
    Das ich denn erst nach 1 Stunde verzweifeltem Suchen finde, ist einbisschen peinlich 😃



  • In deinem zweiten Codefetzen findet sich nirgends ein fopen() .
    Es heißt int main( void ) .
    Die Benutzerführung lügt ('x' vs 'X').
    Dein Kommentar ("//Globale Variablen") lügt auch.



  • Hallo Swordfish

    Das mit dem Kommentar wusste ich, habe ich schon geändert.

    Vielen Dank für den Hinweis mit dem X, ist mir nicht aufgefallen.

    LG Myru



  • Der Adressoperator & beim f = fopen(&dateiname,"a"); ist zuviel.

    9 Zeichen für einen Dateinamen ist arg wenig.
    Selbst MS-DOS und CP/M konnten schon 12 (8.3)

    gets ist eine gefährliche Funktion und sollte laut C-Standard von 1999 nicht mehr genommen werden. Im C-Standard von 2011 ist es nicht mehr drin.

    Dein Einrückungsstil ist grauenhaft.



  • DirkB schrieb:

    Der Adressoperator & beim f = fopen(&dateiname,"a"); ist zuviel.

    Wow!

    DirkB schrieb:

    Dein Einrückungsstil ist grauenhaft.

    Regt mich seit ctrl+k ctrl+d nicht mehr auf.


Anmelden zum Antworten