【发布时间】:2014-08-11 13:47:15
【问题描述】:
我想修改函数内部的一个字符串。我的代码很简单:
#include <stdio.h>
void doSomething ( char **string )
{
sprintf(string,"some string");
}
int main ( void )
{
char *origString = NULL;
doSomething ( &origString );
printf ( "%s\n", origString );
return 0;
}
但是这段代码不起作用。我真的很感激解释而不是解决方案,但也欢迎解决方案。
我确实需要使用 sprintf 函数,因为这个想法是用 %s 添加一些其他字符串。
谢谢!
解决了!
#include <stdio.h>
void doSomething ( char **string )
{
*string = malloc(strlen("some string") + 1);
sprintf(*string,"some string");
}
int main ( void )
{
char *origString = NULL;
doSomething ( &origString );
printf ( "%s\n", origString );
free(origString); // Previously malloced in doSomething
return 0;
}
【问题讨论】:
-
您应该使用警告标志进行编译
-
sprintf不为字符串分配内存。您需要在main()中声明一个字符数组或使用asprintf。
标签: c function reference char c-strings