sinau-c/content/strings.md

5.1 KiB

---LESSON_INFO--- Learning Objectives:

  • Memahami konsep string dalam bahasa C
  • Belajar mendeklarasikan dan menginisialisasi string
  • Mengenal fungsi-fungsi string dalam C
  • Memahami cara memanipulasi string

Prerequisites:

  • Pemahaman tentang array dan pointer
  • Pemahaman dasar tentang program C

---END_LESSON_INFO---

String dalam C

Mendefinisikan string

String dalam C sebenarnya adalah array dari karakter. Meskipun menggunakan pointer dalam C adalah subjek lanjutan, yang dijelaskan sepenuhnya nanti, kita akan menggunakan pointer ke array karakter untuk mendefinisikan string sederhana, dengan cara berikut:

char * name = "John Smith";

Metode ini membuat string yang hanya bisa kita gunakan untuk membaca. Jika kita ingin mendefinisikan string yang bisa dimanipulasi, kita perlu mendefinisikannya sebagai array karakter lokal:

char name[] = "John Smith";

Notasi ini berbeda karena mengalokasikan variabel array sehingga kita bisa memanipulasinya. Notasi kurung kosong [] memberi tahu kompiler untuk menghitung ukuran array secara otomatis. Ini sebenarnya sama dengan mengalokasikannya secara eksplisit, menambahkan satu ke panjang string:

char name[] = "John Smith"; /* sama dengan */
char name[11] = "John Smith";

Alasan kita perlu menambahkan satu, meskipun string John Smith persis 10 karakter panjangnya, adalah untuk terminasi string: karakter khusus (sama dengan 0) yang menunjukkan akhir dari string. Akhir dari string ditandai karena program tidak tahu panjang string - hanya kompiler yang tahu menurut kode.

Pemformatan string dengan printf

Kita bisa menggunakan perintah printf untuk memformat string bersama dengan string lainnya, dengan cara berikut:

char * name = "John Smith";
int age = 27;
/* mencetak 'John Smith is 27 years old.' */
printf("%s is %d years old.\\n", name, age);

Perhatikan bahwa ketika mencetak string, kita harus menambahkan karakter baris baru (\\n) sehingga perintah printf berikutnya akan mencetak di baris baru.

Panjang String

Fungsi 'strlen' mengembalikan panjang string yang harus dilewatkan sebagai argumen:

char * name = "Nikhil";
printf("%d\\n",strlen(name));

Perbandingan String

Fungsi strncmp membandingkan antara dua string, mengembalikan angka 0 jika mereka sama, atau angka yang berbeda jika mereka berbeda. Argumen-argumen adalah dua string yang akan dibandingkan, dan panjang maksimum perbandingan. Ada juga versi yang tidak aman dari fungsi ini yang disebut strcmp, tetapi tidak disarankan untuk menggunakannya. Sebagai contoh:

char * name = "John";
if (strncmp(name, "John", 4) == 0) {
    printf("Hello, John!\\n");
} else {
    printf("You are not John. Go away.\\n");
}

Penggabungan String

Fungsi 'strncat' menambahkan n karakter pertama dari string src ke string tujuan di mana n adalah min(n,length(src)); Argumen yang dilewatkan adalah string tujuan, string sumber, dan n - jumlah maksimum karakter yang akan ditambahkan. Sebagai Contoh:

char dest[20]="Hello";
char src[20]="World";
strncat(dest,src,3);
printf("%s\\n",dest);
strncat(dest,src,20);
printf("%s\\n",dest);

Tabel Fungsi String dalam C

Fungsi Deskripsi Contoh
strlen() Menghitung panjang string strlen("hello") mengembalikan 5
strcpy() Menyalin string strcpy(dest, src)
strcat() Menggabungkan string strcat(dest, src)
strcmp() Membandingkan string strcmp(str1, str2)
strncmp() Membandingkan n karakter string strncmp(str1, str2, n)
strncat() Menggabungkan n karakter string strncat(dest, src, n)

---EXERCISE---

Latihan: Manipulasi String

Definisikan string first_name dengan nilai John menggunakan notasi pointer, dan definisikan string last_name dengan nilai Doe menggunakan notasi array lokal.

Requirements:

  • Gunakan notasi pointer untuk first_name
  • Gunakan notasi array lokal untuk last_name
  • Pastikan string dapat dimanipulasi sesuai kebutuhan

Expected Output:

Done!
JohnBoe

Try writing your solution in the code editor below!

---KEY_TEXT--- char * char [] sprintf strncmp strncat ---END_KEY_TEXT---

---EXPECTED_OUTPUT--- Done! JohnBoe ---END_EXPECTED_OUTPUT---

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

int main() { /* definisikan first_name / / definisikan last_name */ char name[100]; last_name[0] = 'B'; sprintf(name, "%s %s", first_name, last_name); if (strncmp(name, "John Boe", 100) == 0) { printf("Done!\n"); } name[0]='\0'; strncat(name,first_name,4); strncat(name,last_name,20); printf("%s\n",name); return 0; } ---END_INITIAL_CODE---

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

int main() { char * first_name = "John"; char last_name[] = "Doe"; char name[100]; last_name[0] = 'B'; sprintf(name, "%s %s", first_name, last_name); if (strncmp(name, "John Boe", 100) == 0) { printf("Done!\n"); } name[0]='\0'; strncat(name,first_name,4); strncat(name,last_name,20); printf("%s\n",name); return 0; } ---END_SOLUTION_CODE---