Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C中的另一个字符串中插入字符串_C_String - Fatal编程技术网

如何在C中的另一个字符串中插入字符串

如何在C中的另一个字符串中插入字符串,c,string,C,String,我需要在特定位置的另一个字符串中插入一个字符串。下面是一个简单的例子: char *a = "Dany S."; char *b = "My name is *a , I come from ... "; 因此,在stringb中取代*a我希望有Dany S. 如何做到这一点?您可以使用printf,即: #include <stdio.h> char *a = "Dany S."; char *b = "My name is %s , I come from ... ";

我需要在特定位置的另一个字符串中插入一个字符串。下面是一个简单的例子:

char *a = "Dany S.";
char *b = "My name is  *a , I come from ...  ";
因此,在string
b
中取代
*a
我希望有
Dany S.


如何做到这一点?

您可以使用printf,即:

#include <stdio.h>
char *a = "Dany S.";
char *b = "My name is  %s , I come from ...  ";

printf(b, a);
#包括
char*a=“Dany S.”;
char*b=“我的名字是%s,我来自……”;
printf(b,a);

最好/最简单的方法是使用标准C约定:

char *a = "Dany S.";
char *b = "My name is %s, I come from...";

char *c = malloc(strlen(a) + strlen(b));

sprintf( c, b, a );
然后
c
包含新字符串。使用
c
后,需要释放内存:

free( c );
如果要在终止行的输出中使用
c
,则可以将
b
声明为:

char *b = "My name is %s, I come from...\n";

无法修改字符串文字。将内容复制到数组中。搜索要替换的字符串。让我们看看你尝试过什么。听说过C标准库吗?我真的应该让你看看标准库,如果你知道里面有什么,那会对你有好处,但我会很高兴地说。*a在引号内,所以只有两个字符;它不引用变量。而且*a与[0]相同,所以它只是一个字符;只有一个“D”那么行尾字符呢?char*的Sizeof不返回字符串的大小。使用strlen。空终止符仍然需要
+1
。+1对你来说,因为你是个绅士。我想指出的是,在
malloc
之后,OP负责
释放
c
指向的内存块,否则他可能会泄漏内存(他似乎是个新手)这不是sprintf吗?有一个完整的系列,printf输出到stdout,fprintf(文件,到一个文件,sprintf到一个字符串),然后有v..版本,但不知道需要什么…问题不是如何在屏幕上打印东西,而是“在另一个字符串中插入一个字符串”。