Bagaimana cara menambahkan satu char ke string di C?
i.e
char* str = "blablabla";
char c = 'H';
str_append(str,c); /* blablablaH */
Untuk menambahkan char ke string di C, pertama-tama Anda harus memastikan bahwa buffer memori yang berisi string cukup besar untuk menampung karakter tambahan. Dalam contoh program Anda, Anda harus mengalokasikan blok memori baru, tambahan, karena string literal yang diberikan tidak dapat dimodifikasi.
Berikut ini contohnya:
#include <stdlib.h>
int main()
{
char *str = "blablabla";
char c = 'H';
size_t len = strlen(str);
char *str2 = malloc(len + 1 + 1 ); /* one for extra char, one for trailing zero */
strcpy(str2, str);
str2[len] = c;
str2[len + 1] = '\0';
printf( "%s\n", str2 ); /* prints "blablablaH" */
free( str2 );
}
Pertama, gunakan malloc
untuk mengalokasikan potongan memori baru yang cukup besar untuk menampung semua karakter dari string input, char ekstra untuk ditambahkan - dan nol akhir. Kemudian panggil strcpy
untuk menyalin string input ke dalam buffer baru. Terakhir, ubah dua byte terakhir di buffer baru untuk menambahkan karakter yang akan ditambahkan serta nol di belakangnya.
char* str = "blablabla";
Anda tidak boleh memodifikasi string ini sama sekali. String ini berada dalam implementasi yang didefinisikan sebagai wilayah hanya baca. Memodifikasinya menyebabkan Perilaku Tidak Terdefinisi.
Anda memerlukan larik char bukan string literal.
Baca yang bagus: Apa perbedaan antara char a[] = "string"; dan char *p = "string";
Saya rasa Anda tidak dapat mendeklarasikan string seperti itu di c. Anda hanya dapat melakukannya untuk const char dan tentu saja Anda tidak dapat memodifikasi const char karena const.
Anda dapat menggunakan array char dinamis tetapi Anda harus mengurus realokasi.
EDIT: sebenarnya sintaks ini dikompilasi dengan benar. Tetap saja Anda tidak dapat memodifikasi apa yang ditunjuk oleh str jika diinisialisasi dengan cara yang Anda lakukan (dari string literal)