2

如何在 C 中将一个字符串“包含”到另一个字符串中?

这是一个例子:

string1 = "www.google";
string2 = "http://"+string1+".com";

我在使用 strcat() 时遇到了困难。

谢谢

4

2 回答 2

5

如果有可用空间,您可以使用snprintf及其功能返回所需的大小:

const char *string1 = "www.google";
char *string2;
size_t length;

length = snprintf(NULL, 0, "http://%s.com", string1);
if (length < 0) {
    // Handle error.
} else {
    string2 = malloc(length + 1);
    snprintf(string2, length + 1, "http://%s.com", string1);
}

稍微不同的变体,避免了两次使用格式字符串:

const char *string1 = "www.google";
const char *format = "http://%s.com";
char *string2;
size_t length;

length = snprintf(NULL, 0, format, string1);
if (length < 0) {
    // Handle error.
} else {
    string2 = malloc(length + 1);
    snprintf(string2, length + 1, format, string1);
}
于 2012-02-04T20:10:10.703 回答
4

我在使用 strcat() 时遇到了困难

然后尝试 sprintf:

char str[] = "www.google";
char dest[100];

snprintf(dest, sizeof(dest), "http://%s.com", str);

7.19.6.5-3

snprintf函数返回如果 n 足够大,将写入的字符数,不包括终止的空字符。

于 2012-02-04T20:07:18.077 回答