2009-06-09 24 views
2

i wurde gefragt, ob es eine Möglichkeit, einen Wert in eine Zeichenfolge hinzuzufügen war, nicht wie 1 + 1 = 2, aber wie 1 + 1 = 11.Verketten Strings in C

+0

Ich fürchte, Ihre Frage macht derzeit keinen Sinn. Kannst du etwas genauer sein? –

+0

Danke für die Bearbeitung dieses Vinko, ich dachte, ich würde nur für meine Frage geflammt werden, aber ich habe tatsächlich bekommen, was ich wollte. Danke stackoverflow.com – austin

+0

Austin, würde es Ihnen etwas ausmachen, Ihre akzeptierte Antwort zu markieren, die Ihnen am meisten hilft? –

Antwort

7

Ich glaube, Sie brauchen String-Verkettung:

#include <stdio.h> 
#include <string.h> 

int main() { 
    char str1[50] = "Hello "; 
    char str2[] = "World"; 

    strcat(str1, str2); 

    printf("str1: %s\n", str1); 

    return 0; 
} 

aus: http://irc.essex.ac.uk/www.iota-six.co.uk/c/g6_strcat_strncat.asp

+0

Beachten Sie, dass strncat() (mit dem 'n') extrem schwierig zu verwenden ist - also nicht benutzen. –

+0

Warum ist es schwieriger als die Puffer in strcat zu zählen? –

+2

@ Jonathan: Weiß nicht über "extrem hart", aber es ist viel sicherer. –

0

strcat (s1, s2). Beobachten Sie Ihre Puffergrößen.

1

Werfen Sie einen Blick auf die strcat-API. Bei ausreichendem Pufferspeicher können Sie eine Zeichenfolge am Ende einer anderen Zeichenfolge hinzufügen.

char[50] buffer; 
strcpy(buffer, "1"); 
printf("%s\n", buffer); // prints 1 
strcat(buffer, "1"); 
printf("%s\n", buffer); // prints 11 

Referenzseite für strcat

6

Um mehr als zwei Strings zu verketten, können Sie sprintf, z.

+0

-1: Bitte verwenden Sie stattdessen snprintf – ynimous

+0

ynimous: snprintf ist nicht überall verfügbar –

+0

Viele Menschen können nur auf c89 verlassen. süße snprintf ist nicht für sie verfügbar :( –

1

'strcat' ist die Antwort, aber dachte, es sollte ein Beispiel geben, das das Puffergrößenproblem explizit berührt.

#include <string.h> 
#include <stdlib.h> 

/* str1 and str2 are the strings that you want to concatenate... */ 

/* result buffer needs to be one larger than the combined length */ 
/* of the two strings */ 
char *result = malloc((strlen(str1) + strlen(str2) + 1)); 
strcpy(result, str1); 
strcat(result, str2); 
+0

sizeof (char) ist 1, immer. http://drj11.wordpress.com/2007/04/08/sizeofchar-is-1/ –

+0

Dies führt zu Speicherverlust durch Überschreiben des Zeigers 'result', und benötigt mindestens eine strcpy(). Außerdem wird str1 erweitert, aber das bedeutet, dass sowohl str1 als auch str2 schreibgeschützt sein sollen. – RBerteig

+0

malloc() kann NULL zurückgeben, was UB verursacht. – aib