Online C Compiler
Buka di kompiler

Edisi pembelajaran bahasa Indonesia. Kode dan keluarannya tetap seperti aslinya.

String dalam C

Perhatikan terminator nol, kapasitas buffer, dan fungsi string.h.

Buka di kompiler

String dalam C
Perhatikan terminator nol, kapasitas buffer, dan fungsi string.h.

String C diakhiri byte nol. Buffer harus menampung teks sekaligus terminatornya. strlen menghitung karakter sebelum nol, tetapi tidak mengetahui kapasitas objek dengan sendirinya.

fgets menerima kapasitas dan dapat mempertahankan karakter baris baru. Saat menyalin atau menggabungkan string, periksa ruang tersisa dan terminatornya. Jangan mengubah literal string atau membaca masukan tanpa batas ke buffer berukuran tetap.

Bandingkan isi dengan strcmp, bukan alamat dengan ==. Uji string kosong, string panjang, dan spasi di dalamnya. Pemrosesan per byte belum tentu sama dengan menghitung karakter Unicode.

Kode C

#include <stdio.h>
#include <string.h>

int main(void) {
    printf("=== C Strings: Declaration & Manipulation ===\n\n");

    // 1. Mutable stack array
    char greeting[32] = "Hello";
    char name[] = "Programmer";

    printf("Initial greeting: %s (Length: %zu)\n", greeting, strlen(greeting));
    printf("Name: %s (Length: %zu)\n", name, strlen(name));

    // 2. Safe string concatenation with snprintf
    char full_message[64];
    snprintf(full_message, sizeof(full_message), "%s, %s! Welcome to C.", greeting, name);
    printf("Concatenated: %s\n", full_message);

    // 3. In-place string mutation
    greeting[0] = 'J'; // "Jello"
    printf("Modified greeting: %s\n", greeting);

    // 4. String comparison
    char word1[] = "apple";
    char word2[] = "banana";
    int cmp = strcmp(word1, word2);
    if (cmp < 0) {
        printf("\"%s\" comes before \"%s\" alphabetically (cmp = %d)\n", word1, word2, cmp);
    }

    // 5. String reversal in-place
    char text[] = "Online C Compiler";
    size_t len = strlen(text);
    for (size_t i = 0; i < len / 2; i++) {
        char temp = text[i];
        text[i] = text[len - 1 - i];
        text[len - 1 - i] = temp;
    }
    printf("Reversed string: %s\n", text);

    return 0;
}
Buka di kompiler

Keluaran yang diharapkan

=== C Strings: Declaration & Manipulation ===

Initial greeting: Hello (Length: 5)
Name: Programmer (Length: 10)
Concatenated: Hello, Programmer! Welcome to C.
Modified greeting: Jello
"apple" comes before "banana" alphabetically (cmp = -1)
Reversed string: reliPmoC C enilnO

Pertanyaan umum

Mengapa kode dan keluarannya tetap dalam bahasa Inggris?

Kata kunci, pengenal, dan teks yang diperiksa tes dipertahankan agar program tidak berubah. Penjelasan dan kontrol telah diterjemahkan.