Code::Blocks zeigt arrays in eine Zeile an



  • Mein Code::Blocks ist wieder nervig.
    Ich habe folgenden Code:

    int opt;
        char input[50],output[50],nummer[2];
    //Lokale Variablemdeklaration für 3.2 Verkettete Liste=========================================================================
        FILE *pLoad=NULL;
    
        if(argc==1)
        {
            printf("Keine Argumente\n");
            exit(EXIT_FAILURE);
        }
    pLoad=fopen(input,"rt");//Hier Debuggen
        if(pLoad==NULL)
            perror("Konnte Datei nicht Laden\n");
    

    Wenn ich hier den Debugger starte sehe ich data1.txt\0\0\0\224\\sonderzeichen bis zum ende des strings!!
    wer weiß wie man das beheben kann, es ist sehr nervig immer in die Zeiel hineinzuschauen.



  • Wo schreibst du denn bitte etwas in input rein?



  • sorry dsas ich so spät antworte, also ich verwende Kommandozeilenargumente mit getopt hier mal der ganze Code:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <getopt.h>
    
    struct werte
    {
        int wertgroesse;
        int anzahl_wertgroesse;
    };
    
    struct werte *pNext=NULL,*pHead=NULL,*pNew=NULL;
    
    int main(int argc, char*argv[])
    {
    //Lokale Variablemdeklaration für 3.1 Kommandozeilenargumente==================================================================
        int opt;
        char input[10];
        char output[10];
        char nummer[2];
    //Lokale Variablemdeklaration für 3.2 Verkettete Liste=========================================================================
        FILE *pLoad=NULL;
    
        if(argc==1)
        {
            printf("Keine Argumente\n");
            exit(EXIT_FAILURE);
        }
        while((opt=getopt(argc,argv,"i:d:o:"))!= -1)
        {
            switch(opt)
            {
            case 'i':
                sprintf(input,"%s",optarg);
                break;
            case 'd':
                sprintf(nummer,"%s",optarg);
                break;
            case 'o':
                sprintf(output,"%s",optarg);
                break;
            case ':':
                printf("Die Option %c braucht einen Wert\n",optopt);
                exit(EXIT_FAILURE);
                break;
            case '?':
                printf("Error - Kenne die Funktion %c nicht\n",optopt);
                exit(EXIT_FAILURE);
            }
        }
        pLoad=fopen(input,"rt");
        if(pLoad==NULL)
            perror("Konnte Datei nicht Laden\n");
    
        return 0;
    }
    

    Die Argumente sind folgende:

    -i data1.txt -d 0 -o data.svg

    als data1.txt kannst du jede txt datei nehmen, es zeigt das schon bevor ich irgendwas dazu programmiere.
    ich hoffe das problem ist verständlich.

    danke



  • Nur am Rande:
    - meinst du wirklich, daß 9 Zeichen ausreichen für die Dateinamen? bzw. 1 Zeichen für den Zahlen-Parameter?
    - warum verwendest du sprintf() zum Strings-Kopieren? Ich würde eher strcpy() (noch besser strncpy()) stattdessen verwenden. (und 'nummer' klingt für mich, als ob du dort eine Zahl erwartest - da empfehle ich eher, es als int zu speichern.

    Zu deinem Problem: Wie du den Debugger austricksen kannst, könntest du mal im Handbuch nachschlagen, aber vielleicht klappt es ja, wenn du (char*)input betrachtest (ohne Garantie).



  • 9 zeichen habe ich aus verzweiflung gemacht, da der debugger gerade noch so jedes array anzeigen kann.
    selbstverständlich würde ich ein großes array dafür nehmen!!

    kann man hier bilder hochladen, dann kann ich es dir zeigen



  • Kann man nicht - aber wenn du es woanders unterbringst, könntest du hier einen Link hinterlassen.



  • vlt kann ja jemand mein programm bei esinem codeblocks plotten, und schaun wie das dort reagiert.


Anmelden zum Antworten