schreiben in textdatei



  • Hey Leute, ich habe mal wieder ein Problem.
    Ich möchte im Programm eine ober und untergrenze für Werte festlegen (ganze zahlen) z.B. -9 und 9. Nun soll für jeden Wert von -9 bis 9 der Wert quadriert und in eine txt geschrieben werden.
    1. wird die zahl an sich abgedruckt
    2. kommt ein : und die quadrierte zahl wird agedruckt.
    3. es sollen ebensoviele Rauten (#) abgedruckt werden, wie die quadrierte Zahl groß ist.
    Alles passiert je zahl in einer zeile also in der Form x : y ######...
    Für die erste zeile sollte also -9 : 81 #####....## rauskommen. Nachdem das alles geschehen ist passiert es erneut mit der nächsthöheren Zahl in der nächsten Zeile.

    Der Code:

    int main(int argc, char** argv) {
        FILE *inp;
        int a =-9;    //Grenzendef
        int e=9;
        int i=a;       
    
        char inp[]= "C:\\users\\neuer_benutzer\\desktop\\nummerninfo.txt";   //speicherort bzw wo datei erstellt werden soll (Hier meckert er wegen unpassenden bezeichnern char und nochwas 
    
        inp=fopen(inp, "w+");  //hier auch fehler struct passe nicht zu char?! 
        while(i<e){
           int squared =i*i;
            fprintf(inp, "%i :5i  \n", i, squared);
           i++;
    
        }
    
        return (EXIT_SUCCESS);
    }
    

    Das Programm geht natürlich weiter aber es scheitert schon hier beim schreiben der Datei. Mit w+ sollte die Datei ja erstellt werden.
    Ich hoffe jemand kann mir hier helfen. Im Internet finde ich nichts brauchbares und ich habe diese Struktur eig. genau meinem prof nachgebaut aus einem anderen beispiel. leider geht es einfach nicht. 😕



  • Du erhältst also schon Compiler-Fehler? Dann kopiere sie hier 1:1 rein.

    Hast du

    #include <stdio.h>
    

    am Anfang der Datei stehen?



  • Funktioniert das fopen denn erfolgreich?

    Schau mal bei http://www.cplusplus.com/reference/cstdio/perror/, wie du auch erkennen kannst, welcher Fehler das dann ist.



  • hier sind mal alle fehler beschrieben.

    #include <stdio.h>        //gelber fehler (In file included from)
    #include <stdlib.h>      
    
    /*
     * 
     */
    int main(int argc, char** argv) {
        FILE *inp;        //gelber fehler (previous declaration of inp was here)
        int a =-9;
        int e=9;
        int i=a;
    
        char inp[] = "C:\\users\\neuer_benutzer\\desktop\\nummerninfo.txt";   //roter fehler (conflicting types for inp)
    
        inp =fopen(inp, "w+");
    //incompatible types when assigning to type 'char[48]' from type 'struct FILE *'
         inp =fopen(inp, "w+");
    
        if (inp==NULL)  //das habe ich nun kurz eingebaut wie auf der seite. soweit kommt das programm aber nicht da es sofort built failed anzeigt
        perror ("The following error occurred");
      else
        fclose (inp);  //gelber fehler main.c:32:5: warning: passing argument 1 of 'fclose' from incompatible pointer type [enabled by default]
         fclose (inp);
    
        while(i<e){
           int squared =i*i;
            fprintf(inp, "%i :5i  \n", i, squared); //auch wieder wie bei fclose gelber fehler passing argument 1 of fprintf...
           i++;
    
        }
    


  • Steht doch bei den Fehlermeldungen:
    Zeile 13 stellt fest das du

    inp
    

    da zu 2.mal in deinem Quelltext nutzt.
    Zeile 8 noch mal der Hinweis, wenn Zeile 13 richtig, dann Zeile 8 falsch. Wenn du Zeile 13 änderst und sonst keine Konflikte hast, kann 8 so bleiben.

    Meist macht es Sinn die Fehlermeldungen nacheinander aufzulösen. Aber dein Compiler zeigt dir die Hinweise ausführlicher. Also schon mal weitersehen und Fehler beseitigen und danach noch mal von vorn.



  • Warum führst Du in Z. 13 eine Variable ein, die genauso heißt, wie der in Z. 8 eingeführte FILE* ?



  • Ich könnte mir das bein abhacken.Immer wieder mache ich Fehler die ich nicht finde, dann klappt das programm nicht, ich ändere etwas anderes und dadurch entstehen neue Fehler die ich dann nicht als Fehler erkenne 😡
    Aber Danke !



  • Ich weiß nicht ob es mit nur einem Bein besser wird... Fakt ist, du solltest vielleicht lieber mit Hirn und Verstand dir erst mal Grundlagen erarbeiten. Dein Programmierstil und die Qualität deiner Fragen lässt vermuten, dass diese einfach fehlen und du eigentlich überhaupt nicht weißt, was du tust. Lieber am Anfang mehr Zeit in eine sinnvolle Grundlagenerarbeitung stecken anstatt ahnungslos wild drauf los zu programmieren. Aber das Problem haben hier viele...



  • Insbesondere lernen, was genau die einzelnen Warnungen und Fehler bedeuten.


Log in to reply