Jak dodać 'c' do char* ?

0

Jak dodać 'c' do char*? Dostaję seg fault ...

#include <stdlib.h>

int main()
{
    char *str = "blablabla";
    char c = 'H';

    size_t len = strlen(str);
    char *str2 = malloc(len + 1 + 1 );
    strcpy(str2, str);
    str2[len - 2] = c;
    str2[len - 1] = '\0';

    free( str );
    str =  str2;
    printf( str );
}
0

http://ideone.com/a41Lnx

#include <stdlib.h>
 
int main()
{
    char *str = "blablabla";
    char c = 'H';
 
    size_t len = strlen(str);
    char *str2 = malloc(len + 1 + 1 );
    strcpy(str2, str);
    str2[len - 2] = c;
    str2[len - 1] = '\0';

    printf( str2 );
    free(str2);
    return 0;
}

char* str = "blablabla"; to nie jest pamiec dynamiczna, takiej sie nie zwalnia.

0

A gdybym chciał przypisać to z powrotem do

str

?

0

To najpierw przypisz, a dopiero potem zwolnij.

0

Zrobiłem tak, ale nic się nie wyświetla (jakby pusty string jest):

#include <stdlib.h>

int main()
{
    char *str = "blablabla";
    char c = 'H';

    size_t len = strlen(str);
    char *str2 = malloc(len + 1 + 1 );
    strcpy(str2, str);
    str2[len - 2] = c;
    str2[len - 1] = '\0';

    str = str2;
    free(str2);

    printf( str );

    return 0;
}
0

Ale głupi błąd ... ;) już jest ok:

#include <stdlib.h>

int main()
{
    char *str = "blablabla";
    char c = 'H';

    size_t len = strlen(str);
    char *str2 = malloc(len + 1 + 1 );
    strcpy(str2, str);
    str2[len - 2] = c;
    str2[len - 1] = '\0';

    str = str2;

    printf( str );
    free(str2);

    return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1