String dalam C Mudah Dipahami: Deklarasi, Input, Output, dan Fungsi Pustaka
Apa itu String dalam C?
Sebuah string dalam C adalah urutan karakter yang berurutan yang diakhiri oleh karakter null (\0). Meskipun bahasa tidak memiliki tipe string khusus, string biasanya direpresentasikan sebagai array dari nilai char. Kompilator secara otomatis menambahkan penutup null saat Anda menginisialisasi literal string.
"Selamat datang di dunia pemrograman!"
Header standar perpustakaan <string.h> menawarkan beragam fungsi untuk memanipulasi string secara efisien.
Mendeklarasikan dan Menginisialisasi String
Karena C treats a string as a character array, Anda harus menentukan ukuran array. Ukuran menentukan jumlah maksimum karakter (kecuali penutup null) yang dapat disimpan.
char string_variable_name[array_size];
Deklarasi umum:
char first_name[15]; /* menampung hingga 14 karakter + \0 */ char last_name[15];
Saat Anda memberikan penginisialisasi, kompiler menghitung karakter dan secara otomatis menambahkan penutup null. Ukuran array dapat diabaikan jika Anda memberikan penginisialisasi.
char first_name[15] = "ANTHONY"; char first_name[] = "NATHAN"; /* ukuran disimpulkan */ char string3[6] = {'h','e','l','l','o','\0'}; /* penutup eksplisit */ Membaca String dari Pengguna
Fungsi input bervariasi dalam keamanan dan perilaku:
scanf("%s", name) membaca sampai spasi tetapi rentan terhadap buffer overflow. gets() membaca seluruh baris tetapi tidak aman dan dihapus dari C11. fgets(name, size, stdin) membaca hingga size-1 karakter, memberikan ruang untuk penutup null.
Contoh menggunakan fgets:
#include <stdio.h> int main() { char name[50]; printf("Masukkan nama lengkap Anda: "); fgets(name, sizeof(name), stdin); printf("Nama Anda adalah %s", name); return 0; } Mencetak String
Cara klasik untuk menampilkan string adalah printf("%s", name);. Dua alternatif nyaman adalah:
fputs(name, stdout) – menulis langsung ke aliran output. puts(name) – menulis string diikuti oleh baris baru.
Contoh dengan puts:
#include <stdio.h> int main() { char greeting[] = "Hello, world!"; puts(greeting); return 0; } Pustaka String (<string.h>)
Fungsi yang sering digunakan:
| Fungsi | Deskripsi |
| strlen | Mengembalikan panjang string (kecuali penutup null). |
| strcat | Menambahkan satu string ke string lain. |
| strcmp | Membandingkan dua string secara leksikografis. |
| strcpy | Menyalin string. |
| strncmp | Membandingkan hingga n karakter. |
| strncpy | Menyalin hingga n karakter. |
| strchr | Menemukan kemunculan pertama karakter. |
| strrchr | Menemukan kemunculan terakhir karakter. |
| strstr | Menemukan substring. |
| strncat | Menggabungkan hingga n karakter. |
| strlwr | Mengonversi ke huruf kecil (non-standar). |
| strupr | Mengonversi ke huruf besar (non-standar). |
| strrev | Membalik string (non-standar). |
Program ilustratif:
#include <stdio.h> #include <string.h> int main() { char str1[20] = "Hello"; char str2[20] = " World!"; char result[40]; /* Perbandingan */ if (strcmp(str1, str2) == 0) puts("String sama"); else puts("String tidak sama"); /* Penggabungan */ strcat(str1, str2); // str1 sekarang berisi "Hello World!" printf("Digabungkan: %s\n", str1); /* Panjang */ printf("Panjang str1: %zu\n", strlen(str1)); /* Salinan */ strcpy(result, str1); printf("String disalin: %s\n", result); return 0; } Mengonversi String menjadi Angka
Konversi standar:
atoi – mengonversi ke int. atof – mengonversi ke double. atol – mengonversi ke long.
Contoh dengan atoi:
#include <stdio.h> #include <stdlib.h> int main() { char number_str[20]; printf("Masukkan angka: "); fgets(number_str, sizeof(number_str), stdin); int num = atoi(number_str); printf("Anda memasukkan %d\n", num); return 0; } Poin Utama
- Sebuah string adalah urutan karakter yang disimpan dalam array
char yang diakhiri oleh \0. - Deklarasikan ukuran array sebelum penggunaan, atau biarkan kompiler menyimpulkannya saat menginisialisasi.
- Gunakan
fgets untuk input yang aman; hindari gets dan scanf("%s") tanpa pemeriksaan batas. - Manfaatkan
<string.h> untuk operasi string yang kuat. - Konversi string angka dengan
atoi, atof, atau atol untuk menghindari kesalahan runtime. - Ingat bahwa literal string bersifat read-only; memodifikasinya menyebabkan perilaku yang tidak terdefinisi.