Werte eines Array auslesen und vergleichen mit ARGV



  • Moin ich verzweifel gerade nur so. Wenn ich den folgenden Quelltext compiliere und mit den parametern programm.exe -a -b -c aufrufe dann kann ich sehen, dass j und m jeweils den gleichen Inhalt haben und dennoch wird nicht Erfolg ausgegeben. Ah und warum muss ich im Array a- schreiben wenn ich doch -a ausgegeben bekomme. Das verstehe ich erstrecht nicht.

    #include <stdio.h>
    
    int main (int argc, char *argv[])
    {
    
    int auswahl [] = { 'a-','b-','c-'};
    int	i, j, m;
    
    for (i=1; i<argc; ++i)
    {
    	sscanf(argv[i], "%s", &j);
    	m = auswahl[i - 1];
    	printf("M: %s", &m);
    	printf(" <--> J: %s\n", &j);
    	if ("m" == "j")
    		printf("ERFOLG \n");
    }
    }
    

    😡

    Ergibnis der DOS Box:
    D:\test\Debug>test -a -b -c AUFRUF
    M: -a <--> J: -a AUSGABE
    M: -b <--> J: -b AUSGABE
    M: -c <--> J: -c AUSGABE



  • if ("m" == "j")

    Ich weiß nicht aber willst du wirklich den String m mit dem string j vergleichen. Ich glaube du bist gerade an einem Punkt an dem du den Wald vor lauter Bäumen nicht siehst. 😉 hol dir mal nen Kaffe kenne das



  • ich bin mir nicht sicher aber ich glaube das mit dem - hat was mit Parameterübergabe zu tun. Diese werden durch dieses - getrennt bzw. das bedeutet das jetzt ein Parameter kommt. Das -Zeichen wird aber nicht Bestandteil eines Parameters. Wie gesagt bei dieser Aussage bin ich mir nicht sicher.



  • Gerade als Anfänger kann man schon mal verzweifeln. So wie ich jetzt.

    #include <stdio.h>
    #include <string.h>
    
    int main (int argc, char *argv[])
    {
    
    int auswahl [] = { 'a-','b-','c-'};
    int    i, ret = 0;
    char s1[] = "", s2[] = "";
    
    for (i=1; i<argc; ++i)
    {
        sscanf(argv[i], "%s", &s1);
        *s2 = auswahl[i - 1];
        printf("M: %s", &s1);
        printf(" <--> J: %s\n", &s2);
    
        ret = strcmp(s1, s2);
            printf("ERFOLG %d\n", ret);
    }
    }
    

    Wie bekomme ich den kram hin das kann doch nicht so schwer sein;)



  • Lazarus schrieb:

    ich bin mir nicht sicher aber ich glaube das mit dem - hat was mit Parameterübergabe zu tun. Diese werden durch dieses - getrennt bzw. das bedeutet das jetzt ein Parameter kommt. Das -Zeichen wird aber nicht Bestandteil eines Parameters. Wie gesagt bei dieser Aussage bin ich mir nicht sicher.

    Hab beim letzten Program auch die Parameter geprüft und musste bei folgender Prüfung das Minus einbeziehen also wird es scheinbar mit angezeigt und bewertet.

    x = *argv[i];
    if ( isdigit(x) || (x == 45)) /*pruefe auf - */



  • meckert77 schrieb:

    int auswahl [] = { 'a-','b-','c-'};
    

    ich frage mich, was das sein soll. 1. wenn man ' und ' benutzt, dann kann man nur ein Zeichen speichern und nicht 2. a- sind 2 Zeichen.
    2. ein int für eine Zeichenkette?


Anmelden zum Antworten