Nachhilfe C Programmieren?

2 Antworten

Von Experte Dultus, UserMod Light bestätigt

Weil sizeof(s1) nicht das macht, was Du denkst. Es ist die Größe des Pointers, nicht die Storagegröße des Strings.

Dadurch liefern beide Divisionen das gleiche Ergebnis.

Wie also könnte man das machen?

#include <string.h>

...

if (strlen(s1)-strlen(s2))

Naja...

  1. sizeof(s1)/sizeof(s1[0]) und sizeof(s2)/sizeof(s2[0]) wird nicht funktionieren um die Länge der Zeichenketten zu ermitteln.
  2. sizeof gibt die Größe des Zeigers auf den Charakter zurück, nicht die Länge der Zeichenkette.
  3. Und du übergibst die Zeichenketten unten als Argument an die Funktion comp, aber du solltest Zeichenketten als Arrays von Zeichen übergeben, nicht als String-Literale.

meine Vorgehensweise und Tipps:

#include <stdio.h>
#include <string.h>


void comp(char s1[], char s2[]) {
    if (strlen(s1) != strlen(s2)) {
        printf("Die Zeichenketten unterscheiden sich in Ihrer Länge!\n");
    } else {
        printf("Die Zeichenketten haben die gleiche Länge.\n");
    }
}


int main() {
    char s1[] = "aaaaaa";
    char s2[] = "aaaaa";


    comp(s1, s2);


    return 0;
}

strlen eignen sich hier gut um die Länge der Zeichenketten zu ermitteln, dazu musst du aber die strinh.h bibliothek einbinden und die zeichenketten werden als zeichenarrays übergeben

Woher ich das weiß:Hobby – Programmierer