iniparser_load("BeliebigerString")/fpload("BelibigerString","r")



  • Hallo zsm,
    ich bin ein Neuer hier im Forum und fast genauso neu beim Programmieren.

    Ich möchte eine .ini datei einlesen. Das klappt auch wunderbar wenn ich beim Befehl iniparser_load(".....") direkt im Code den Namen der Datei hineinschreibe.

    Jetzt möchte ich aber den Anweder selbst entscheiden lassen welche Datei er einlesen möchte.
    Ich hatte mir das über eine Abfrage überlegt, über die der Benutzer einen String mit dem (exakten) Namen der Datei erstellt. Diesen String wollte ich dann im iniparser_load einsetzen.
    Leider macht er das nicht.

    Gleiches bei fopen(...).
    Jemand eine Idee wie ich den Anwender den Dateinamen eingeben lassen kann?

    --------------------------------------------------------------------------
    int main()
    {
    char Dateiname[30];

    printf("Geben Sie den Namen der Datei ein, die eingelesen werden soll:\n");
    scanf("%s", &Dateiname );

    dictionary *ini;

    ini=iniparser_load(Dateiname);



  • scanf("%s", Dateiname );


  • Mod

    Ein weiteres Programm, das sich in die lange Reihe der Programme einreiht, die nicht mit Leerzeichen in Dateinamen zurecht kommen 😞
    Und 30 Zeichen Maximallänge? 😮



  • Erster und dritter Link in diesem Subforum:

    [Neu] Syntax Highlighting für C
    RTFM! oder warum dir keiner helfen will...

    Wie schwer war es, diese Threads zu ignorieren, bevor du deinen Post impulsiv geöffnet hast? Und wie schwer war es, die Codetags zu ignorieren, die du unter dem Eingabefenster siehst?

    =======================================

    Der Code hat einen Schönheitsfehler, du reservierst nur für 30 Zeichen Speicher. Was, wenn ich mich aber entschließe, mehr einzugeben? Dann überschreibe ich deinen Stack, trage meine eigene Rücksprungadresse ein und kapere dein Programm. Und was, wenn ich ein Leerzeichen eintrage? Dann kommt nur der erste Teil in den String.

    Was heißt

    Leider macht er das nicht.

    ? Kristallkugel ist grad in der Reinigung. Was ist die Fehlermeldung/Fehlercode? Bist du dir sicher, dass die Datei in dem Pfad liegt, in der du sie vermutest? Gerade IDEs können Anfänger da verwirren, weil das Ausführungsverzeichnis ein anderes ist.

    EDIT: Link korrigiert.



  • Bei fopen bietet sich nach Fehlschlag eine aussagekräftige Fehlermeldung für den Anwender an, mit perror .
    Das sollte dann den Anwender (oder Entwickler) auf den richtigen Weg bringen:

    const char *fname = "bla  bla  .txt";
    FILE *f = fopen(fname,"r");
    if( !f )
    {
      perror(fname);
    }
    else
    {
      ...
      fclose(f);
    }
    


  • Ein

    printf("Oeffne Datei: <%s> zum lesen\n", Dateiname);
    

    ist manchmal extrem hilfreich.


Log in to reply