Archiv verlassen und diese Seite im Standarddesign anzeigen : chars zusammenfügen
Realmaker
21-02-2004, 18:43
Hallo.
ich habe 2 chars mit
char a[]="a";
char b[]="b";
erstellt und würde nun diese beiden gerne zu char c zusammenfügen, also mit dem inhalt ab. wie geht das? (in c++)
mfg
Hi!
Hmm du kannst die C Funktion strcpy verwenden
char c[50];
char a[]="a";
strcpy(c,a);
Du musst sicherstellen, dass es zu keiner Überscheritung kommt -> strncpy()
Oder
char c[512]="";
char a[]="a";
char b[]="b";
strcat(c,a);
strcat(c,b);
printf("%s",c);
sollte auch funtzen
mfg
Realmaker
21-02-2004, 19:10
Danke, klappt genau so wie es klappen sollte =)
Realmaker
21-02-2004, 20:01
Nun hab cih aber doch noch ein problem, erstmal der code:
#include <iostream>
using namespace std;
char gettext(){
char a[]="a";
char b[]="b";
char c[512]="";
strcat(c,a);
strcat(c,b);
return c;
}
int main(int argc, char *argv[])
{
char gettextvar[]=gettext();
cout << gettext;
return 0;
}
ich bekomme für die zeile "return c;" die meldung "error: invalid conversion from `const char* ' to `char'". wieso ist das auf einmal const char* wenn ich das eigentlich nicht geändert hab?
In C:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
/* fehler war char statt char * */
char * gettext( void ){
const char * a = "a";
const char * b = "b";
/* fehler war eine lokale variable, welche nicht per pointer zurück
gegeben werden kann, da sie nur in der funktion existiert.
stattdessen alloziere ich speicher am heap und gib den zurück.
zumal aber das allozieren schief gehn kann die abfrage if ( c ) */
char * c = malloc( strlen( a ) + strlen( b ) + 1 );
if( c ) {
strcpy( c, a ); /* fehler war strcat statt strcpy */
strcat( c, b );
}
return c;
}
int main( int argc, char *argv[] )
{
char * gettextvar = gettext();
/* fehler war gettext statt gettextvar */
printf( "%s\n", gettextvar );
return 0;
}
Aber du sagtest eigentlich C++, nicht?
#include <string>
#include <iostream>
using namespace std;
string gettext( void ){
string a = "a";
string b = "b";
return a + b;
}
int main( int argc, char *argv[] )
{
string gettextvar = gettext();
cout << gettextvar << endl;
return 0;
}
Apropos:
Würd nicht den Funktionsnamen gettext() verwenden, zumal der schon von der gettext lib verwendet wird (für i18n).
Powered by vBulletin® Version 4.2.5 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.