함수 내에서 문자열을 수정하고 싶습니다. 내 코드는 매우 쉽습니다.C 참조 문자열 전달
#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;
}
하지만이 코드는 작동하지 않습니다. 솔루션 이상의 설명에 정말 감사하겠습니다.하지만 솔루션도 환영합니다.
% sp와 함께 다른 문자열을 추가하기 때문에 실제로 sprintf 함수를 사용해야합니다.
감사합니다.
해결!
#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;
}
경고 플래그 – Alexis
으로 컴파일해야합니다. sprintf가 문자열에 메모리를 할당하지 않습니다. 'main()'에 문자 배열을 선언하거나'asprintf'를 사용해야합니다. –