Я хочу добавить нули в начале строки с этим методом:Добавить нули в строку в 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'd
Я думаю, что проблема с перераспределить, но я не имеют понятия, почему она не будет работать здесь
Вы теряете указатель, возвращаемый 'realloc' после выхода из функции (поскольку он назначен локальному указателю), плюс вы не устанавливаете нулевой ограничитель во втором цикле – myaut