tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
20
ZUGRIFFE
768
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    kafkef kafkef ist offline Rookie
    Registriert seit
    Nov 2011
    Beiträge
    8
    Hallo,
    versuche gerade ein Programm zu schreiben, mit dem
    ich zwei Zeichenketten zusammenfassen möchte :
    z.b.
    a= abc
    b= def

    Ausgabe: abcdef

    Ich muss auf string verzichten, stattdessen char verwenden.
    Nun definiere die ich die eingabegröße so:
    char eingabe1[15]
    char eingabe2[15]

    Und natürlich "def" an "abc" anhängen,
    so dass die Ausgabe : abcdef erfolgt.

    Danke euch im voraus
    Geändert von kafkef (07.12.11 um 22:13 Uhr)
     

  2. #2
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    Hi

    ein char-Array, wie du da hast, ist im Grunde nichts anderes als das "String", das dir bekannt ist.
    Und wenn du die Eingabe mit irgendeiner halbwegs normalen Methode einliest
    brauchst du überhaupt nichts zusätzlich tun.
    Das Endzeichen \0 wird von der Einlesefunktion automatisch angehängt.

    Zum Einlesen gibts zwar viele Möglichkeiten, empfehlen würde ich gets für diesen Fall.
    Code cpp:
    1
    2
    
    char eingabe1[15];
    gets(eingabe1);

    Zusammenhängen kannst du Strings dann mit strcat.
    Code cpp:
    1
    
    strcat(eingabe1, eingabe2);

    Gruß
    kafkef bedankt sich. 
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  3. #3
    Avatar von MSVCplusplus
    MSVCplusplus MSVCplusplus ist offline Mitglied Brokat
    Registriert seit
    Dec 2010
    Ort
    Hessen
    Beiträge
    336
    Klammer bitte anderstrum
    sheel bedankt sich. 
    Fehlermeldung bitte!
    Google - Dein Freund und Helfer

  4. #4
    kafkef kafkef ist offline Rookie
    Registriert seit
    Nov 2011
    Beiträge
    8
    danke für die Vorschläge.
    Ich habe vergessen zu erwähnen, dass ich auch auf strcat verzichten muss.
    Also muss ich andere Wege nutzen, um die Zeichenketten zu verbinden.

    mit new und delete?
     

  5. #5
    cwriter cwriter ist offline Mitglied Gold
    Registriert seit
    Mar 2010
    Beiträge
    242
    Ok, dann so?
    Code c:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
        char Eingabe1[15];
    char Eingabe2[15];
     
    scanf("%s",Eingabe1);
    scanf("%s",Eingabe2);
     
    int i = 1;
    int len1 = strlen(Eingabe1);
    int len2 = strlen(Eingabe2);
    while(i != len1 + len2)
    {
    Eingabe1[len1 + i -1] = Eingabe2[i-1];
    i++;
    }
    //String terminieren
    Eingabe1[strlen(Eingabe1) + 1] = '\0';
    printf(Eingabe1);

    Gruss
    cwriter

    /EDIT: Bedenke aber, dass damit die Länge des 1. Strings + die Länge des 2. Strings maximal 15 betragen darf!
    Geändert von cwriter (07.12.11 um 19:56 Uhr)
    kafkef bedankt sich. 
    Intel inside - Idiot outside :-)

    Ich schreibe in C und bin Anfänger.
    ______________________________

    Falls ich eines Tages einen guten Beitrag schreiben werde, bitte bewerten und/oder Danke sagen.
    Danke

  6. #6
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    new/delete ist was ganz Anderes.

    Wenn du auf das fertige strcat verzichten musst, programmierst du es eben nach.
    Code cpp:
    1
    2
    3
    4
    
    int i = 0, j = 0;
    while(eingabe1[i++]);
    i--;
    while(eingabe1[i++] = eingabe2[j++]);

    Gruß

    @cwriter: scanf-%s hat Whitespaceprobleme.
    Und der Code......macht seltsame Sachen.
    kafkef bedankt sich. 
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  7. #7
    kafkef kafkef ist offline Rookie
    Registriert seit
    Nov 2011
    Beiträge
    8
    ......................
    Geändert von kafkef (07.12.11 um 22:16 Uhr)
     

  8. #8
    cwriter cwriter ist offline Mitglied Gold
    Registriert seit
    Mar 2010
    Beiträge
    242
    @sheel
    So? Bei mir läuft's... Ja, er ist nicht schön, aber mal schnell geschrieben. Und ja, scanf() hat diese Probleme. Ich finde scanf() aber dennoch nicht schlecht, da man beispielsweise mit der Eingabe
    Code :
    1
    
    asd fgh
    die Entertaste nur einmal betätigen muss. Kommt auf die Vorlieben an, fgets(Eingabe1, 15, STDIN); (hoffe mal stimmt so ) geht auch. Aber da muss sich kafkef entscheiden.

    @kafkef
    Bitte was?! Keine Schleifen? Dann kopierst du die While() einfach als if 15x. Wenn dein Dozent das so mag
    Keine String.h? Die bezieht sich doch auf die c++-Strings?
    Funktionen verboten? Alle? Muss man die Funktionen selbst schreiben oder ist auch das verboten?

    Gruss
    cwriter
    Geändert von cwriter (07.12.11 um 20:12 Uhr)
     
    Intel inside - Idiot outside :-)

    Ich schreibe in C und bin Anfänger.
    ______________________________

    Falls ich eines Tages einen guten Beitrag schreiben werde, bitte bewerten und/oder Danke sagen.
    Danke

  9. #9
    Avatar von Jennesta
    Jennesta Jennesta ist offline Mitglied Gold
    Registriert seit
    Sep 2007
    Ort
    Aachen
    Beiträge
    215
    Zitat Zitat von cwriter Beitrag anzeigen
    Keine String.h? Die bezieht sich doch auf die c++-Strings?
    Nein, da sind die Funktionen wie strcat, strcpy, strlen etc drinnen, die sich auf die char* -strings beziehen.
    cwriter bedankt sich. 
    Was soll daran kompliziert sein? Es muss doch nur ein Rad bewegt werden, man kann aufsteigen, es kommt die Matschhütte und durch den Regenbogen gelangst du zum hungrigen Affen, der Affenschwanz wird gezogen und bums kommst du zum Paradispark.

  10. #10
    cwriter cwriter ist offline Mitglied Gold
    Registriert seit
    Mar 2010
    Beiträge
    242
    Uups, fail. Sorry

    @kafkef
    Hat dein Dozent irgendwelche Hinweise gegeben? Ich meine, ohne while() wird das ganze sehr mühsam...

    Gruss
    cwriter
    kafkef bedankt sich. 
    Intel inside - Idiot outside :-)

    Ich schreibe in C und bin Anfänger.
    ______________________________

    Falls ich eines Tages einen guten Beitrag schreiben werde, bitte bewerten und/oder Danke sagen.
    Danke

  11. #11
    kafkef kafkef ist offline Rookie
    Registriert seit
    Nov 2011
    Beiträge
    8
    @cwriter
    leider keine Hinweise...
    Nur die Aufgabenstellung:
    .. zwei Zeichenketten von der Tastatur einliest und in C-Strings (char-Arrays) speichert. Dann soll der zweite String an den ersten String angehängt werden. Achten Sie dabei auf die Nullterminierungszeichen!
    Anschließend sollen zur Kontrolle beide char-Arrays auf dem Bildschirm ausgegeben werden.
     

  12. #12
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    @keine Schliefen: Aber if und goto sind erlaubt
    Dein Dozent ist wohl der Hardcore-Assembler...

    Ich schreib was, Moment...
    edit:
    Code cpp:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    
    #include<stdio.h>
    #include<string.h>
     
    void main()
    {
        char eingabe1[100];
        char eingabe2[100];
     
        gets(eingabe1);
        gets(eingabe2);
     
        int i = 0;
        int j = 0;
     
    mark2:
        if(!eingabe1[i])
            goto mark1;
        i++;
        goto mark2;
    mark1:
     
    mark4:
        if(!(eingabe1[i] = eingabe2[j]))
            goto mark3;
        i++;
        j++;
        goto mark4;
    mark3:
     
        puts(eingabe1);
    }
    kafkef bedankt sich. 
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  13. #13
    cwriter cwriter ist offline Mitglied Gold
    Registriert seit
    Mar 2010
    Beiträge
    242
    Ah, moment, habe was (frech von sheel adaptiert )
    Code c:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
     
    char eingabe1[15];
    char eingabe2[15];
     
    scanf("%s",eingabe1);
    scanf("%s",eingabe2);
     
    int i = 0, j = 0;
    check1:
    if(eingabe1[i++]) goto check1;
    i--;
    check2:
    if(eingabe1[i++] = eingabe2[j++]) goto check2;
    printf(eingabe1);

    So. Funktioniert's?

    Gruss
    cwriter
    Geändert von cwriter (07.12.11 um 20:41 Uhr)
    kafkef bedankt sich. 
    Intel inside - Idiot outside :-)

    Ich schreibe in C und bin Anfänger.
    ______________________________

    Falls ich eines Tages einen guten Beitrag schreiben werde, bitte bewerten und/oder Danke sagen.
    Danke

  14. #14
    Avatar von sheel
    sheel sheel ist offline Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.501
    So ists noch kürzer
     
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  15. #15
    cwriter cwriter ist offline Mitglied Gold
    Registriert seit
    Mar 2010
    Beiträge
    242
    Der Code ist ja auch eigentlich von dir

    Gruss
    cwriter
    kafkef bedankt sich. 
    Intel inside - Idiot outside :-)

    Ich schreibe in C und bin Anfänger.
    ______________________________

    Falls ich eines Tages einen guten Beitrag schreiben werde, bitte bewerten und/oder Danke sagen.
    Danke

Ähnliche Themen

  1. Antworten: 4
    Letzter Beitrag: 23.06.10, 17:44
  2. Antworten: 10
    Letzter Beitrag: 13.11.08, 13:16
  3. Antworten: 1
    Letzter Beitrag: 11.10.07, 12:07
  4. Antworten: 3
    Letzter Beitrag: 25.04.07, 09:37
  5. String enthält Zeichenkette?
    Von RMI_17 im Forum Visual Basic 6.0
    Antworten: 2
    Letzter Beitrag: 13.03.06, 13:26