Fertiger Quellcode will nicht funktionieren. HILFE !!



  • hmmm strtok braucht meine ich string.h

    ansonsten stellt sich die frage, was genau denn nicht funktioniert.
    ich hab zwar versucht, meine glaskugel zu befragen, aber dann ist sie mir runter gefallen und kaputt gegangen. 😡



  • Warnungen aktivieren!!! string.h fehlt für strtok() und irgendwas stimmt da nicht:

    f.c:77:10: warning: assignment makes integer from pointer without a cast [enabled by default]
    f.c:86:2: warning: passing argument 1 of 'atoi' makes pointer from integer without a cast [enabled by default]
    


  • Ja du hast recht. Danke.

    Also mein Programm erstellt auf Linux mit Eclipse keine Datei.
    Auf Windows wird mit dem selben Code eine Datei erstellt mit der verlangten Tabelle.

    Ich weiß nicht genau, ob es an Linux liegen könnte oder vllt. an Eclipse und wie ich dieses Problem beheben könnte. Die Bedingung dieser Aufgabe ist, dass ich diese auf Linux vorstellen muss.



  • Möchtest du noch einen Tipp geben, wie sich das Verhalten zwischen Linux und Windows unterscheidet?

    Ich hatte es schon in einem deiner letzten Threads erwähnt, dass es Blödsinn ist, nur eine Meldung auszugeben, wenn die Datei nicht geöffnet werden kann.
    Da gehört noch mehr dazu.
    (Das ist so, als wenn sich die Fahrstuhltür öffnet, du sagst: "Es ist kein Fahrstuhl da", aber trotzdem nach vorn (in den Schacht) gehst.)

    Du kannst den Debugger nehmen oder ein paar mehr printf einbauen, damit du siehst, wo es klemmt.
    Auch perror ist dabei sehr hilfreich: http://www.cplusplus.com/reference/cstdio/perror/?kw=perror



  • Ok, zu spät.

    Auch das fopen für "mittelwerte_M_N.txt" muss eine Erfolgskontrolle bekommen.
    Mit perror bekommst du auch winen Hinweis, was schief gegangen ist.



  • Es wird die zu Beginn eine kleine Spielerei abgefragt, ob man eine Datei einlesen möchte oder nicht. drückt man eine 1 dann und es wird die Vorgabedatei eingelesen.
    Anschließend wird in der Konsole ein kleiner text ausgegeben, dass quasi alles ok war. Im Ordner wo sich die Textdatei befindet wird dann unter Windows eine neue Textdatei erzeugt. Das selbe Schema läuft auch bei Linux ab nur, dass keine Textdatei erzeugt wird.

    Ich habe es bereits mit ein paar ausgaben versucht, ob vllt wegen Eclipse oder wegen Linux in eine Schleife nicht reingegangen wird, aber alle Ausgaben wurde in der Konsole ausgegeben. Somit liegt es wohl nicht an der Logik des Programmablaufs würde ich nun mal so behaupten.



  • Habe es soeben mit "perror" gemacht und wie zuvor kam die Ausgabe, dass es erfolgreich war ("success").



  • Ich habe es eben verwechselt mit dem perror und an einer falschen Stelle geschrieben, wo die Vorgabedatei eingelesen wird.

    Ich habe es nun an der Stelle wo die Datei erzeugt werden sollte, aber es kam nichts.

    //Datei schreiben und befüllen mit fprintf
        tabelle = fopen("mittelwerte_M_N.txt","w+");
    
        if(tabelle==NULL) {
        perror("klappt");
        } else {
        perror("klappt nicht");
        }
    


  • Hast du es aus der IDE gestartet?
    Wenn ja öffne mal die Kommandozeile, wechsel zum desktop und starte das Programm dort.



  • Was soll IDE sein ?

    Ich habe es jetzt gerade über einen Konsolenaufruf versucht und das programm so gestartet und das wurde mir angezeigt.

    > Willkommen zur Messwerterfassung <

    Bitte waehlen Sie einen Modus aus.
    (1) Lesen der Textdatei.
    (2) Beenden des Programms.

    Eingabe: 1

    Die Datei konnte geoeffnet werden.

    Speicherzugriffsfehler (Speicherabzug geschrieben)
    student@student-virtual-machine:~/Arbeitsfläche$



  • Nicht übersehen: Beitrag vom 14:14:06 11.01.2016
    Irgendwas stimmt da nicht, Warnungen an!



  • Was soll Zeile 66?
    Die Schleife wird sowieso nur einmal ausgeführt, sofern keine Leerzeichen oder Umbrüche in der Datei sind.

    Ausserdem kommt es dort zu einem Überlauf wenn die Daten nicht in das Array passen.

    IDE: integrated development environment



  • Bitmapper schrieb:

    Was soll Zeile 66?
    Die Schleife wird sowieso nur einmal ausgeführt, sofern keine Leerzeichen oder Umbrüche in der Datei sind.

    Ausserdem kommt es dort zu einem Überlauf wenn die Daten nicht in das Array passen.

    Cobain hat scanf nicht verstanden, wollte es unbedingt mit strtok machen und hat solange rumgespielt bis das Ergebnis stimmte.
    Er hat nicht verstanden was und warum es passiert.

    Das sieht man auch daran, dass er zählt, wie oft strtok läuft, danach aber wieder mit festen Werten arbeitet



  • Cobain schrieb:

    Was soll IDE sein ?

    Ich habe es jetzt gerade über einen Konsolenaufruf versucht und das programm so gestartet und das wurde mir angezeigt.

    > Willkommen zur Messwerterfassung <

    Bitte waehlen Sie einen Modus aus.
    (1) Lesen der Textdatei.
    (2) Beenden des Programms.

    Eingabe: 1

    Die Datei konnte geoeffnet werden.

    Speicherzugriffsfehler (Speicherabzug geschrieben)
    student@student-virtual-machine:~/Arbeitsfläche$

    Machst du zwischen "Die Datei konnte geoeffnet werden." und "Die Tabelle mit den erzeugten Dateien wurde erfolgreich erstellt." noch irgendwelche anderen Ausgaben?
    Z.B. in
    Zeile 70: puts("Fertig mit einlesen");
    Zeile 75: printf("Token gefunden <%s>\n", ptr);
    Zeile 82: puts("EINLESEN ENDE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
    usw.



  • Ich weise nochmal auf die Warnungen hin... atoi() wird mit einem Integer aufgerufen, dass das nicht passen kann sieht man doch schon am Funktionsnamen.


Anmelden zum Antworten