0Pricing
C Academy · Pelajaran

strlen, strcpy, strcat

Fungsi string inti.

strlen, strcpy, strcat adalah pelajaran C Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C Academy mencakup 4 pelajaran total.

String dalam C

Dalam C, string hanyalah array char yang diakhiri karakter terminator null khusus, yaitu '\0'.

Fungsi dalam <string.h> mengandalkan terminator ini untuk mengetahui akhir string. Tanpanya, fungsi tersebut akan membaca melewati akhir array Anda.

#include <stdio.h>

int main(void) {
    char name[] = "Alice";
    printf("%s\n", name);
    printf("Bytes used: %lu\n", sizeof(name));
    return 0;
}

Menyertakan string.h

Untuk menggunakan fungsi string, Anda harus menyertakan header berikut:

  • #include <string.h>

Dengan demikian, Anda mendapatkan strlen, strcpy, strcat, strcmp, dan lainnya.

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

int main(void) {
    char greeting[] = "Hello";
    printf("Length is %lu\n", strlen(greeting));
    return 0;
}

strlen: menghitung karakter

strlen mengembalikan jumlah karakter sebelum terminator null. Fungsi ini tidak menghitung '\0' itu sendiri.

Jadi, strlen("cat") mengembalikan 3, meskipun array tersebut menampung 4 byte.

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

int main(void) {
    char word[] = "cat";
    printf("strlen = %lu\n", strlen(word));
    printf("sizeof = %lu\n", sizeof(word));
    return 0;
}

strlen adalah O(n)

Karena string C tidak menyimpan panjangnya, strlen harus melewati setiap karakter hingga menemukan '\0'.

Hal ini menjadikannya operasi O(n). Hindari memanggilnya berulang kali dalam kondisi perulangan untuk string besar.

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

int main(void) {
    char msg[] = "programming";
    size_t len = strlen(msg);
    for (size_t i = 0; i < len; i++) {
        printf("%c", msg[i]);
    }
    printf("\n");
    return 0;
}

strcpy: menyalin string

Anda tidak dapat menyalin string dengan =. Gunakan strcpy(dest, src), yang menyalin src ke dalam dest, termasuk terminator null.

Tujuan harus cukup besar untuk menampung sumber beserta terminatornya.

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

int main(void) {
    char src[] = "Hello";
    char dest[20];
    strcpy(dest, src);
    printf("%s\n", dest);
    return 0;
}

Bahaya Luapan Buffer strcpy

Jika dest terlalu kecil, strcpy menulis melewati buffer dan merusak memori. Ini adalah bug keamanan klasik.

Lebih baik gunakan strncpy(dest, src, n), yang menyalin paling banyak n byte. Catatan: strncpy mungkin tidak menambahkan terminator null jika src terlalu panjang.

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

int main(void) {
    char src[] = "LongString";
    char dest[5];
    strncpy(dest, src, 4);
    dest[4] = '\0';
    printf("%s\n", dest);
    return 0;
}

strcat: menggabungkan string

strcat(dest, src) menambahkan src ke akhir dest. Fungsi ini mulai menulis pada terminator null milik dest, lalu menambahkan terminator baru di bagian akhir.

dest harus sudah berupa string yang valid dan memiliki ruang kosong yang cukup.

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

int main(void) {
    char buffer[20] = "Hello, ";
    strcat(buffer, "World");
    printf("%s\n", buffer);
    return 0;
}

Membangun string secara bertahap

Anda dapat merangkai strcpy dan strcat untuk membangun string sedikit demi sedikit.

Selalu mulai dengan buffer yang sudah diinisialisasi agar strcat pertama menemukan terminator yang valid.

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

int main(void) {
    char full[50];
    strcpy(full, "Mr. ");
    strcat(full, "John ");
    strcat(full, "Smith");
    printf("%s\n", full);
    return 0;
}

Penggabungan yang lebih aman dengan strncat

strncat(dest, src, n) menambahkan paling banyak n karakter dari src, lalu selalu menambahkan terminator null.

Ini membantu mencegah luapan ketika panjang sumber tidak diketahui.

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

int main(void) {
    char dest[16] = "Data: ";
    char src[] = "1234567890";
    strncat(dest, src, 5);
    printf("%s\n", dest);
    return 0;
}

Nilai kembalian

strcpy dan strcat sama-sama mengembalikan penunjuk ke dest. Dengan begitu, Anda dapat menumpuk pemanggilan fungsi, meskipun hal ini dapat mengurangi keterbacaan.

strlen mengembalikan size_t, yang tidak bertanda. Berhati-hatilah saat membandingkannya dengan bilangan bulat bertanda.

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

int main(void) {
    char a[20] = "foo";
    char b[] = "bar";
    printf("%s\n", strcat(a, b));
    return 0;
}

Kesalahan umum saat mengalokasikan

Kesalahan yang sering terjadi adalah lupa menambahkan +1 untuk terminator null saat menentukan ukuran buffer.

Untuk string dengan panjang n, Anda memerlukan n + 1 byte. Panjang gabungan dua string yang disatukan adalah strlen(a) + strlen(b) + 1.

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

int main(void) {
    char a[] = "abc";
    char b[] = "de";
    size_t needed = strlen(a) + strlen(b) + 1;
    printf("Need %lu bytes\n", needed);
    return 0;
}

Pemeriksaan singkat

Uji pemahaman Anda tentang panjang string.

Rangkuman

Anda telah mempelajari fungsi inti string.h:

  • strlen menghitung karakter sebelum '\0' (O(n)).
  • strcpy menyalin string; tujuan harus cukup besar.
  • strcat menambahkan teks ke string yang sudah ada.
  • Selalu sediakan ruang untuk terminator null, dan utamakan varian strn* demi keamanan.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “strlen, strcpy, strcat” gratis?

Ya — teks lengkap “strlen, strcpy, strcat” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C Academy, upgrade ke CoddyKit PRO. Kursus C Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “strlen, strcpy, strcat”?

Fungsi string inti. Kamu berlatih C Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai C Academy?

Tidak diperlukan pengalaman sebelumnya. C Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “strlen, strcpy, strcat” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran C Academy ini?

Ya. Setiap pelajaran C Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. strlen, strcpy, strcat
  2. strcmp dan Perbandingan
  3. strtok dan Tokenisasi
  4. memcpy dan memset
← Kembali ke C Academy