String dalam Pemrograman C: Menguasai Deklarasi, Inisialisasi, dan I/O
String dalam Pemrograman C Tutorial ini memandu Anda melalui dasar-dasar string C: deklarasi, inisialisasi, input/output, penggunaan fungsi, pointer, dan fungsi pustaka penting.
Dalam C, string adalah array karakter yang diakhiri dengan byte nol \0. Contohnya:
char c[] = "c string"; Kompilator secara otomatis menambahkan \0 pada literal string, membuatnya menjadi string C yang benar.
Bagaimana mendeklarasikan string? String dideklarasikan sebagai array karakter. Contohnya:
char s[5]; Ini mendeklarasikan buffer yang dapat menampung hingga 4 karakter plus terminator \0.
Bagaimana menginisialisasi string? Beberapa gaya inisialisasi tersedia:
char c[] = "abcd"; char c[50] = "abcd"; char c[] = {'a', 'b', 'c', 'd', '\0'}; char c[5] = {'a', 'b', 'c', 'd', '\0'}; Hati-hati dengan buffer overflow: char c[5] = "abcde"; mencoba menyimpan enam karakter (termasuk \0) dalam array lima byte dan harus dihindari.
Menugaskan Nilai ke String Array tidak dapat ditugaskan setelah deklarasi. Sebaliknya, gunakan strcpy():
char c[100]; strcpy(c, "C programming"); Catatan: Penugasan langsung seperti c = "C programming"; menyebabkan error waktu kompilasi.
Membaca String dari Pengguna Gunakan scanf() untuk input yang dipisahkan spasi:
#include <stdio.h> int main() { char name[20]; printf("Masukkan nama: "); scanf("%s", name); printf("Nama Anda adalah %s.", name); return 0; } Keluaran
Masukkan nama: Dennis Ritchie Nama Anda adalah Dennis. Hanya kata pertama yang ditangkap karena scanf() berhenti pada spasi putih. Nama array mereduksi menjadi pointer, sehingga name diteruskan langsung.
Bagaimana membaca seluruh baris? Gunakan fgets() dan puts():
#include <stdio.h> int main() { char name[30]; printf("Masukkan nama: "); fgets(name, sizeof(name), stdin); printf("Nama: "); puts(name); return 0; } Keluaran
Masukkan nama: Tom Hanks Nama: Tom Hanks fgets() membaca hingga sizeof(name)-1 karakter, termasuk spasi. Ia juga mempertahankan newline di akhir, yang dicetak oleh puts().
Catatan: gets() sudah usang dan dihapus dari standar C karena dapat menyebabkan buffer overflow.
Meneruskan String ke Fungsi String diteruskan ke fungsi seperti array. Contoh:
#include <stdio.h> void displayString(char str[]); int main() { char str[50]; printf("Masukkan string: "); fgets(str, sizeof(str), stdin); displayString(str); return 0; } void displayString(char str[]) { printf("Keluaran String: "); puts(str); } String dan Pointer Nama string mereduksi menjadi pointer, memungkinkan aritmetika pointer:
#include <stdio.h> int main(void) { char name[] = "Harry Potter"; printf("%c", *name); // H printf("%c", *(name+1)); // a printf("%c", *(name+7)); // o char *namePtr = name; printf("%c", *namePtr); // H printf("%c", *(namePtr+1)); // a printf("%c", *(namePtr+7)); // o } Fungsi String yang Umum Digunakan strlen() – mengembalikan panjang string (kecuali terminator nol). strcpy() – menyalin satu string ke string lain. strcmp() – membandingkan dua string secara leksikografis. strcat() – menggabungkan dua string.