strcmp gibt immer 1 zurück?



  • pixartist schrieb:

    achsooo ich dachte es vergleicht den inhalt der strings -.- dann muss ich wohl ne funtion schreiben...

    Er vergleicht ob die beiden strings identisch sind!



  • hm noch ne frage zu dem code...
    wenn ich ne 2d array hab:
    array[10][20]
    wie kann ich dann die länge der ersten dimension abfragen?
    weil strlen(array) geht nicht!



  • printf("%d\n", sizeof(array)/sizeof(*array));
    


  • curry-king schrieb:

    printf("%d\n", sizeof(array)/sizeof(*array));
    

    ja, ich will ja aber nur die beschriebene länge haben und nicht die gesamtlänge...deswegen ja auch strlen!



  • hihi 🤡

    die ursache ist, daß scanf() das new-line mitliest!!! wenn du also "exit" eintippst, dann liefert dir scanf() "exit\n"!!!

    die änderung von

    scanf("%s",buf)
    

    auf

    scanf("%s\n",buf)
    

    sollte das problem lösen 😃



  • hab oben mist gebaut 🕶

    es muß nicht

    scanf("%s\n",buf)
    

    lauten sondern natürlich

    scanf("^[\n]",buf)
    

    hach, ist mir das peinlich 😞

    aber besser du benutzt gets(buf). gets() (oder besser noch fgets()) lesen das new-line am ende nicht mit ein und sind auch viel einfacher zu verstehen als scanf() 😉



  • mann, hab schon wieder mist gebaut 🤡

    also das mit dem nl mitlesen hab ich mit fgets() verwechselt!!!

    den mist den ich geschrieben habe sofort wieder vergessen!!!



  • Konfusius, hör auf, rumzuspammen.
    Hast du deine Tipps überhaupt mal ausprobiert? Gleich zwei Fehler in einem billigen Formatstring...
    und so wie ich hier gucke, scheinst du dich ja riesig über scanf() zu freuen und überall deinen Senf dazuzugeben..



  • pixartist schrieb:

    hm noch ne frage zu dem code...
    wenn ich ne 2d array hab:
    array[10][20]
    wie kann ich dann die länge der ersten dimension abfragen?
    weil strlen(array) geht nicht!

    bitte helft mir!
    ich meine natürlich die beschriebene länge



  • du meinst, du willst 10 zurückkriegen?

    int main()
    {
    	char foo[10][20];
    	printf("size of whole array: %d\n", sizeof(foo)); // -> 200
    	printf("size of second dimension: %d\n", sizeof(foo[0])); // -> 20
    	printf("size of first dimension: %d\n", sizeof(foo)/sizeof(foo[0])); // -> 10
    	return 0;
    }
    

    beschriebene länge? also wieviele der strings beschrieben sind?
    geht meines wissens nur mit schleife:

    int i, c = 0;
    for (i = 0; i < sizeof(foo)/sizeof(foo[0]); ++i) c += (foo[i][0] != '\0');
    

    prüft, ob bei einem string die terminierende null gleich am anfang ist, wenn nicht wird c inkrementiert.


Anmelden zum Antworten