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.