C++ Zeichenkette ohne string , Terminierungszeichen

kafkef

Grünschnabel
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
 
Zuletzt bearbeitet:
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.
C++:
char eingabe1[15];
gets(eingabe1);

Zusammenhängen kannst du Strings dann mit strcat.
C++:
strcat(eingabe1, eingabe2);

Gruß
 
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?
 
Ok, dann so?
C:
	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!
 
Zuletzt bearbeitet:
new/delete ist was ganz Anderes.

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

Gruß

@cwriter: scanf-%s hat Whitespaceprobleme.
Und der Code...:confused:...macht seltsame Sachen.
 
@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:
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 :suspekt:
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
 
Zuletzt bearbeitet:
Uups, fail. Sorry :-(

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

Gruss
cwriter
 
Zurück