Hilfe für Anfänger

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Hilfe für Anfänger

    Hallo C Freunde,
    ich versuche mich grad mal eine Woche an C und bin schon fast am verzweifeln. Könnte sich mal bitte jemand meinen Quellcode ansehen und mir auf die Sprünge helfen?

    Es geht um eine Hausaufgabe. Aufgabenstellung: 2 Zeichenketten sollen zeichenweise eingelesen (maximale Zeichenzahl mit define MAX x begrenzen), und dann ebenfalls zeichenweise Verglichen und sortiert ausgegeben werden.

    Ich hatte schon alles fertig, habe aber anscheinend immer mit ähnlichen Zeichenketten probiert. So kam es im Seminar dann zu Fehlern. Ich hab jetzt nochmal alles neu angefangen und bekomme bereits im 1.Teil (Einlesen der Zeichenketten) folgenden Fehler:
    Getestet wurde mit zwei mal 7 Zeichen Tastatureingabe.
    Zeichenkette 1 wird richtig erstellt. Kongret werden die ersten 4 Zeichen der Tastatureingabe in Kette1 übernommen. In Zeile 31 wird Kette1 abgeschlossen und dann Kette2 erstellt. Das funktioniert auch so weit, bis auf Zeile 49. Hier wird die Kette1, beginnend mit dem linken Zeichen, mit "\000" überschrieben. Warum????

    Quellcode

    1. #include <stdio.h>
    2. #include <string.h>
    3. #define MAX 4
    4. int main ()
    5. {
    6. char kette1 [MAX]; /* Zeichenkette 1 */
    7. char kette2 [MAX]; /* Zeichenkette 2 */
    8. char c;
    9. unsigned int i; /* Zählvariable für Schleifen */
    10. printf("Vergleich zweier Reihen\n");
    11. i=0;
    12. while ( scanf ("%c", &c)==1 && c != '\n')
    13. {
    14. if (i<=MAX-1)
    15. {
    16. kette1[i]= c;
    17. i++;
    18. }
    19. }
    20. kette1[i]='\0'; /* Setzen des Endezeichen für Zeichenkette 1 */
    21. i=0;
    22. while ( scanf ("%c", &c)==1 && c != '\n')
    23. {
    24. if (i<=MAX-1) /* Kontrolle ob max. Zeichenkettenlänge überschritten wird */
    25. {
    26. kette2[i]= c; /* Übername von c in Zeichenkette 2 */
    27. i++; /* Erhöhung Zählvariable */
    28. }
    29. }
    30. kette2[i]='\0'; /* Setzen des Endezeichen für Zeichenkette 2 */
    31. printf("< %s >\n",kette1);
    32. printf("< %s >\n",kette2);
    33. return 0;
    34. }
    Alles anzeigen


    Kann mir jemand einen Tip geben was ich hier verkehrt mache? Ich danke Euch für jeden Tip.

    viele Grüße
    rosch[/i][/i][/i][/i]

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von rosch ()

  • Hallo bcc-fan,

    Danke für Deine Antwort.

    Der Fehler in Zeile 25 ist erst vor dem Kopieren zustande gekommen. Ich hoffe ich habe den Quellcode diesmal richtig eingefügt. Vielleicht noch der Hinweis, ich arbeite unter Windows XP mit CodeBlock.

    Quellcode

    1. #include <stdio.h>
    2. #include <string.h>
    3. #define MAX 4
    4. int main ()
    5. {
    6. char kette1 [MAX]; /* Zeichenkette 1 */
    7. char kette2 [MAX]; /* Zeichenkette 2 */
    8. char c;
    9. unsigned int i; /* Zählvariable für Schleifen */
    10. printf("Vergleich zweier Reihen\n");
    11. i=0;
    12. while ( scanf ("%c", &c)==1 && c != '\n')
    13. {
    14. if (i<=MAX-1)
    15. {
    16. kette1[i]= c;
    17. i++;
    18. }
    19. }
    20. kette1[i]='\0'; /* Setzen des Endezeichen für Zeichenkette 1 */
    21. i=0;
    22. while ( scanf ("%c", &c)==1 && c != '\n')
    23. {
    24. if (i<=MAX-1) /* Kontrolle ob max. Zeichenkettenlänge überschritten wird */
    25. {
    26. kette2[i]= c; /* Übername von c in Zeichenkette 2 */
    27. i++; /* Erhöhung Zählvariable */
    28. }
    29. }
    30. kette2[i]='\0'; /* Setzen des Endezeichen für Zeichenkette 2 */
    31. printf("< %s >\n",kette1);
    32. printf("< %s >\n",kette2);
    33. return 0;
    34. }
    Alles anzeigen


    Wäre schön wenn Du raus bekommst warum es nicht klappt.

    MfG rosch

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von rosch ()