에서 문자열에 0을 추가는 C
void addFrontzeros(char *str,int zeros)
{
if(zeros==0)
{
return;
}
char *temp=malloc((strlen(str)+1+zeros)*sizeof(char));
int i=0;
for(;i<zeros;i++)
{
temp[i]='0';
}
int j=0;
for(;j<strlen(str);j++)
{
temp[j+zeros]=str[j];
}
temp[strlen(str)+zeros]=0;
str=realloc(str,(strlen(temp)+1)*sizeof(char));
strcpy(str,temp);
free(temp);
}
을하지만 난 다른 방법에서 호출 할 때 문자열은 호출 후 비어 있습니다. 와
char *mul = malloc(sizeof(char)*2);
mul[0]='0';
mul[1]=0;
을 Valgrind의 난이 오류가있어 : 호출자 문자열은 다른 방법으로 다음과 같이 할당 0x5201b00 크기의 블록 내부에 0 바이트 2 free되기를
내가 문제라고 생각입니다 주소 그것은 늘 당신이 (아마도) 기능 내부 str
을 수정하고 realloc
를 호출하여 여기
함수를 떠난 후'realloc'에 의해 반환 된 포인터를 잃어 버리고 있습니다 (로컬 포인터에 할당 됨). 그리고 두 번째 루프에 널 종결자를 설정하지 않았습니다. – myaut