zeichenüberprüfung von kommandozeilenparameter geht nicht



  • hi, ich wollte ein Programm schreiben, dass morsecode in buchsaben umwandelt bei der eingabe von kommandozeilenparameter. bei der überprüfung auf falscheingaben findet das programm es nicht raus, wenn ich z.b. -.a eingebe... hier der Teilcode:

    m=1;
        n=0;
        while(argc>m)
        {
            n=0;
            laenge=(strlen(argv[m]));
    
            while(n<=laenge)
            {
                if((argv[m][n]=='.' || argv[m][n]=='-') && laenge < 5)
                {
                    printf("%c", argv[m][n]);
                    break;
                }
                return -1;
            }
            m++;
        }
    

    und hier der gesamte code:

    #include <stdio.h>
    #include <string.h>
    
    char morseTable[3][3][3][3];
    int a[4];
    
    void initMorseTable();
    int test(int, char argv[100][20]);
    
    main(int argc, char*argv[])
    {
        int n;
        int m=1;
        int laenge, t;
        int test=1;
    
        initMorseTable();
    
        m=1;
        n=0;
        while(argc>m)
        {
            n=0;
            laenge=(strlen(argv[m]));
    
            while(n<=laenge)
            {
                if((argv[m][n]=='.' || argv[m][n]=='-') && laenge < 5)
                {
                    break;
                }
                return -1;
            }
            m++;
        }
    
        m=1;
    
        if(test)
        {
            while(m<argc)
            {
                laenge=(strlen(argv[m]));
                n=0;
                while(n<laenge)
                {
                    if(argv[m][n]=='.')
                    {
                        a[n]=1;
                    }
    
                    if(argv[m][n]=='-')
                    {
                        a[n]=2;
                    }
                  n++;
    
                }
                 printf("%c", morseTable[a[0]][a[1]][a[2]][a[3]]);
                reset();
                m++;
            }
        }
        return 0;
    }
    
    void reset()
    {
        int n=0;
        while(n<=4)
        {
            a[n]=0;
            n++;
        }
    }
    
    void initMorseTable()
    {
    morseTable[1][2][0][0] = 'A';
    morseTable[2][1][1][1] = 'B';
    morseTable[2][1][2][1] = 'C';
    morseTable[2][1][1][0] = 'D';
    morseTable[1][0][0][0] = 'E';
    morseTable[1][1][2][1] = 'F';
    morseTable[2][2][1][0] = 'G';
    morseTable[1][1][1][1] = 'H';
    morseTable[1][1][0][0] = 'I';
    morseTable[1][2][2][2] = 'J';
    morseTable[2][1][2][0] = 'K';
    morseTable[1][2][1][1] = 'L';
    morseTable[2][2][0][0] = 'M';
    morseTable[2][1][0][0] = 'N';
    morseTable[2][2][2][0] = 'O';
    morseTable[1][2][2][1] = 'P';
    morseTable[2][2][1][2] = 'Q';
    morseTable[1][2][1][0] = 'R';
    morseTable[1][1][1][0] = 'S';
    morseTable[2][0][0][0] = 'T';
    morseTable[1][1][2][0] = 'U';
    morseTable[1][1][1][2] = 'V';
    morseTable[1][2][2][0] = 'W';
    morseTable[2][1][1][2] = 'X';
    morseTable[2][1][2][2] = 'Y';
    morseTable[2][2][1][1] = 'Z';
    }
    


  • Hallo,

    ersetze mal das break durch ein continue, schreib ein n++ davor und im While-Kopf ein < statt <=.
    Das müsste dann schonmal die richtige Richtung sein ;).

    Gruß



  • danke, jetzt funktioniert es. 🙂


Anmelden zum Antworten