Ada tiga macam tipe string yang bisa kita temukan dalam beberapa bahasa pemrograman, yaitu:
- String yang disimpan sebagai objek.
- Null terminated string
- Zero length string
Zero length string merupakan bentuk tipe data string dalam bahasa pascal. Dalam bahasa C++ yang digunakan adalah string yang disimpan sebagai objek. Kalau kalian menggunakan bahasa C, kalian harus menggunakan null terminated string. Deklarasi null terminated string bisa menggunakan pointer atau array dengan tipe data karakter.
Akhir dari string yang disimpan dalam bahasa C ditandai dengan karakter null yang merupakan karakter ascii dengan angka 0, karena itu string dalam bahasa C disebut "null terminated string". NULL (0) yang disimpan dalam array karakter adalah angka 0 dan bukan karakter '0'. Contoh sederhana penggunaan string dalam bahasa C adalah seperti di bawah ini.
#include <stdio.h>
int main(){
char *s="Halo Dunia!";
printf("s = %s", s);
return 0;
}
String yang dideklarasikan sebagai pointer tidak dapat diubah nilainya karena itu memang hanya ditujukan untuk ditampilkan dan disalin nilainya. Jika kita ingin mengubah nilai string, gunakan array dengan ukuran array yang lebih panjang dari jumlah karakter dalam string. Array yang menyimpan string harus lebih panjang dari panjang stringnya karena ada karakter NULL (0) yang ada di akhir string.
#include <stdio.h>
#include <string.h>
int main(){
char *s="Halo Dunia";
char t[20];
strcpy(t, s);
t[5]=0;
strcat(t, "Kawan!");
printf("Nilai t = ");
puts(t);
printf("panjang string yang tersimpan = %d", strlen(t));
return 0;
}
Pada contoh di atas, fungsi yang terdapat pada header "string.h" adalah strlen, strcat dan strcpy. Function strcpy digunakan untuk menyalin isi string sedangkan function strlen digunakan untuk mengetahui panjang string. Selain itu, pada contoh di atas, kita juga mengubah panjang string menjadi 5 dengan mengubah karakter ke-5 menjadi 0 ( NULL ) sehingga karakter lain setelah karakter NULL diabaikan. String dianggap hanya berisi kata "Halo " tanpa kata "dunia" yang ada setelahnya. Kemudian, kita menambahkan kata kawan dengan menggunakan function strcat.
- scanf ("%s", s) : Meminta input berupa tipe data string.
- atoi (s) : mengubah string s menjadi bilangan bulat.
- atof (s) : mengubah string s menjadi bilangan dengan tipe data float.
- sprintf(s, ...) : mengubah tipe data bilangan bulat maupun float menjadi string.
- snprintf(s, ...) : versi lain dari sprintf yang membatasi panjang string yang dihasilkan.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
char s1[20]="20";
char s2[20]="25.2";
char s3[20];
int n1;
float n2;
n1=atoi(s1);
n2=atof(s2);
if(strcmp(s1, s2)!=0)sprintf(s3, "%s + %s = %.1f", s1, s2, n1+n2);
printf("%s", s3);
return 0;
}
Selain fungsi strlen yang digunakan untuk mengetahui panjang string ada fungsi lain yang terdapat dalam "string.h". Beberapa fungsi dalam header "string.h"yang dapat kita gunakan yaitu :
- strlen(s) : Panjang string variabel s.
- strupr(s) : mengubah semua huruf dalam string variabel s menjadi huruf besar.
- strlwr(s) : mengubah semua huruf dalam string variabel s menjadi huruf kecil.
- strcpy(s1, s2) : untuk menyalin string dari variabel s1 ke dalam variabel s2.
- strcat(s1, s2) : Untuk menggabungkan string dalam variabel s1 dan s2.
- strcmp(s1, s2) : Untuk membandingkan string dalam variabel s1 dan s2. Jika s1 isinya "sama dengan" s2, maka nilai kembalian function strcmp adalah 0.
Input Untuk Tipe Data String
Untuk tipe data string, ada beberapa function yang bisa kalian gunakan untuk mendapatkan input dari pengguna. Kalian bisa menggunakan scanf dan gets untuk bahasa C.
Function scanf hanya mengambil satu kata sebelum spasi kecuali kalian menggunakan "trik khusus". Kalau kalian ingin mendapatkan isi dari string yang berupa array dengan tipe data char, gunakan scanf dengan regular expression.
#include <stdio.h>
int main(){
char s[100];
scanf("%[^\n]s", s);
printf("%s", s);
return 0;
}
Kalian bisa mengapit karakter-karakter yang boleh digunakan dengan tanda "kurung kotak". Jika ada tanda panah ke atas (^), maka yang ditunjukkan adalah karakter yang tidak boleh digunakan dalam input. Jika scanf menemukan karakter yang tidak boleh digunakan, scanf akan berhenti menyimpan karakter ke dalam variabel. Pada contoh di atas, karakter yang tidak boleh digunakan adalah karakter khusus untuk "new line ( \n )".
Untuk yang malas mengetik, dowload source code-nya di sini.