[C/C++] Segmentation Fault

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Smokers, 1. Juni 2010 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 1. Juni 2010
    Segmentation Fault

    Ja aso ich hab eigentlich nur ne kurze Frage,...

    ich hab halt wie immer unter Windows programmiert muss das Programm allerdings in Linux vorstellen.
    Die typischen Fehler umgehe ich nun inzwischen schon relativ gut, allerdgins finde ich den Fehler der mir unter Linux nen Segmentation Fault bringt nicht....

    Code:
    int main(int argc, char** argv) {
     FILE *fp;
     char* fname;
     char key = '\0';
    
     if (argc > 1) {
     fname = argv[1];
     } else {
     readFileName(fname);
     }
     ............
     ............
     ............
     ............
    }
    
    void readFileName(char* fname) {
     do {
     printf("Bitte geben Sie den Dateinamen ein!\n");
     scanf("%s60", fname);
     } while (strlen(fname) < 1);
     fflush(stdin);
    }
    
    
    Der Fehler wird nur produziert wenn ich per Kommandozile kein File angebe, also muss der Fehler im Lesen oder Verarbeiten des Filenames liegen.

    Unter Windows funktioniert es, und das es " scanf("%s60", &fname);" liegen kann , ist es nicht. Da bekomme ich dann unter Windows schon nen Absturz ( komme mit den Zeigern öfter durcheinander darum)

    Jem ne Idee?
     
  2. 1. Juni 2010
    AW: Segmentation Fault

    deklariere fname mit NULL und teste es nochmal.
    zudem müsstest du dem pointer noch speicher reservieren.

    ps: mitr &fname übergibst du nen pointer zu nem pointer
     
  3. 1. Juni 2010
    Zuletzt von einem Moderator bearbeitet: 13. April 2017
    AW: Segmentation Fault

    Code:
    char* fname = NULL;
    Bekomme ich nach meinem Enter bei der Eingabe unter Windows nen Fehler.
    Also soltle auch nen Segmentation Fault sein, nur Windows ist weniger aufschlussreich und beendet die exe dann einfach.


    //////
    Also danke an Murdoc , wurde mal im ICQ gelöst mit :

    Code:
    /*
     * File: main.c
     * Author: Smoki
     *
     * Created on 29. Mai 2010, 19:15
     */
    
    #include <stdio.h>
    #include <stdlib.h>
    
    /*
     *
     */
    #define CLEAR_SCREEN "clear"
    
    
    int main(int argc, char** argv) {
     FILE *fp;
     char *fname;
     char key = '\0';
    
     if (argc > 1) {
     fname = argv[1];
     } else {
     fname = (char *) malloc(sizeof (char) * 61);
     fname[60] = '\0';
     readFileName(fname);
     }
    .......................................
    .......................................
    }
    
    
    void readFileName(char* fname) {
     do {
     printf("Bitte geben Sie den Dateinamen ein!\n");
     scanf("%s60", fname);
     } while (strlen(fname) < 1);
     fflush(stdin);
    }
    
    
    
    
    

    Hie rnochmal eine Reaktion von : RemaL


     
  4. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.