Strings in c



  • Hier mal die Aufgabe:

    Eine Zeichenfolge soll eingelesen und in einem String der Länge 10 gespeichert werden.
    Ggf. muss der eingegebene String gekürzt werden. Der Rest soll wiederum in einem separaten String gespeichert und ausgegeben werden. Die gesamte Eingabe soll überprüft und folgende Werte ausgegeben werden:
    a) die Länge der eingegebenen Zeichenfolge,
    b) ggf. der abgeschnittene Teil des Strings,
    c) die Anzahl der Ziffern und der Großbuchstaben im eingegebenen String.

    Beispiel:
    Bitte geben Sie eine Zeichenfolge ein: AbcDefGhi099
    Der gespeicherte String ist AbcDefGhi0.
    Die eingegebene Folge enthält 12 Zeichen.
    Folgende Zeichen wurden abgeschnitten: 99 Die Folge enthält 3 Ziffern und 3 Grossbuchstaben.
    Bitte geben Sie eine Zeichenfolge ein: ...

    Hinweis:
    Die Eingabe soll nicht zeichenweise sondern als String eingelesen werden. Verwenden Sie scanf("%s", ...) oder gets()! Testen Sie das Programm auch mit einer Zeichenfolge, die kürzer als 10 Zeichen ist! Funktionen aus <string.h> wie strlen(), strcpy(), strstr() etc. dürfen nicht verwendet werden.

    Das habe ich schon

    int z;
    char str1[i];
    
    printf("Bitte geben Sie eine Zeichenfolge ein: ");
    gets(str1);
    
    printf("Der gespeicherte String ist: %s\n", str1);
    
    for(z=0; str1[z] != '\0'; z++);
    printf("Die eingegebene Folge enthaelt %d Zeichen.",z);
    

    was muss ich z.B tun um den string nach 10 zeichen abzuschneiden und mir die abgeschnitteten Zeichen anzeigen zu lassen.

    Bitte postet mal eure Idee zu den Problemen



  • csloader schrieb:

    was muss ich z.B tun um den string nach 10 zeichen abzuschneiden und mir die abgeschnitteten Zeichen anzeigen zu lassen.

    naja, einfach die zeichen zählen (machste ja schon). wenn der zähler auf 10 steht, hast du bereits 10 zeichen erwischt und musst die restlichen zeichen anders behandeln oder so.
    🙂



  • csloader schrieb:

    int z;
    char str1[i];
    

    Huhu,

    ich kann mir beim Besten Willen nicht vorstellen, dass das funktioniert.

    Wenn du ein C-String deklarierst, muss die Feldgröße ein KONSTANTER Ausdruck sein, falls du versuchst, ein dynamischen String zu machen geht das anders.



  • ich habe i als 10 definiert.

    Wie kann ich das ganze denn dynamisch machen?



  • csloader schrieb:

    was muss ich z.B tun um den string nach 10 zeichen abzuschneiden und mir die abgeschnitteten Zeichen anzeigen zu lassen.

    Bitte postet mal eure Idee zu den Problemen

    Zum Anzeigen: Nen Zeiger auf Position str1 + 10 zeigen lassen, Zeiger an printf übergeben.

    Zum Abschneiden: Den Wert an Pos. str1 + 10 auf 0 setzen.

    csloader schrieb:

    Wie kann ich das ganze denn dynamisch machen?

    Mit malloc und co.

    Gruß,
    B.B.


Anmelden zum Antworten