Fungsi dan Array · Pelajaran 8 dari 12

String sebagai array char

9 menit baca · BelajarCode

C tidak punya tipe string khusus. String adalah array char yang diakhiri karakter nol '\0'. Karakter nol inilah yang menandai akhir string.

C
1#include <stdio.h>2#include <string.h>34int main(void) {5    char kota[] = "Bandung";6    printf("%s punya %zu huruf\n", kota, strlen(kota));7    printf("Ukuran array: %zu byte\n", sizeof(kota));8    printf("Huruf pertama: %c, terakhir: %c\n", kota[0], kota[strlen(kota) - 1]);9    return 0;10}
Keluaran
Bandung punya 7 huruf
Ukuran array: 8 byte
Huruf pertama: B, terakhir: g

Array kota berukuran 8 byte: 7 huruf ditambah satu karakter '\0' di akhir.

Fungsi di string.h

Fungsi string yang sering dipakai
FungsiGunanyaCatatan
strlen(s)Panjang string tanpa '\0'
strcmp(a, b)Membandingkan dua stringBernilai 0 jika sama
strcpy(tujuan, asal)Menyalin stringTujuan harus cukup besar
strcat(tujuan, asal)Menyambung stringTujuan harus cukup besar
snprintf(buf, ukuran, ...)Menulis teks berformat ke bufferTidak pernah melewati ukuran buffer
C
1#include <stdio.h>2#include <string.h>34int main(void) {5    char sapaan[40];6    snprintf(sapaan, sizeof(sapaan), "Halo, %s!", "Dewi");7    printf("%s\n", sapaan);89    if (strcmp("admin", "admin") == 0) printf("Sama\n");10    if (strcmp("apel", "jeruk") < 0) printf("apel sebelum jeruk\n");11    return 0;12}
Keluaran
Halo, Dewi!
Sama
apel sebelum jeruk

Jangan bandingkan string dengan ==

if (s == "admin") membandingkan alamat memori, bukan isi string, sehingga hasilnya hampir selalu salah. Selalu pakai strcmp.

Membaca satu baris dengan fgets

scanf("%s", ...) berhenti di spasi, sehingga nama "Dewi Lestari" hanya terbaca "Dewi". Untuk membaca satu baris penuh, pakai fgets.

C
1#include <ctype.h>2#include <stdio.h>3#include <string.h>45int main(void) {6    char nama[50];7    if (fgets(nama, sizeof(nama), stdin) == NULL) return 1;8    nama[strcspn(nama, "\n")] = '\0';910    for (int i = 0; nama[i] != '\0'; i++) {11        nama[i] = (char)toupper((unsigned char)nama[i]);12    }13    printf("Nama dalam huruf besar: %s\n", nama);14    return 0;15}
Masukan
Dewi Lestari
Keluaran
Nama dalam huruf besar: DEWI LESTARI
  • fgets membaca paling banyak sizeof(nama) - 1 karakter, jadi tidak pernah melewati batas array.
  • fgets ikut menyimpan karakter baris baru. strcspn(nama, "\n") mencari posisinya, lalu diganti '\0'.
  • toupper dari ctype.h mengubah satu karakter menjadi huruf besar.

Cek pemahaman

Berapa nilai strcmp("data", "data")?

Latihan

Hitung kata

Baca satu baris kalimat dengan fgets, lalu hitung banyaknya kata. Kata dipisahkan satu atau lebih spasi.

Jalankan contoh kode di pelajaran ini tanpa instalasi lewat compiler C online.

Tandai pelajaran ini selesai

Masuk ke aplikasi untuk mencatat kemajuan, lalu lanjutkan ke pelajaran berikutnya dari perangkat mana pun.

Buka di aplikasi