String

C tidak mempunyai tipe data string, namun C menggunakan array dengan tipe char sebagai gantinya. C menggunakan karakter khusus untuk menandai akhir dari string yaitu karakter nol (‘\0’).

Deklarasi

Beberapa bentuk deklarasi dari array tipe char :

char data1[6] = {‘H’,’e’,’l’,’l’,’o’,’\0′};
char data2[6] = “there”;
char data3[] = “Belajar C”;
char data4[7] = “No NULL”;

data1 adalah deklarasi string yang mengharuskan kita menambahkan karakter ‘\0’ pada akhir array. Kalau kita tidak menyertakan karakter null, maka data1 bukan merupakan string tetapi array tipe char.

data2 adalah deklarasi string dengan maksimum jumlah karakter adalah 5 sedangkan karakter ke 6 secara otomatis diisi dengan karakter null (‘\0’) oleh compiler.

data3 adalah deklarasi string dengan tidak menentukan panjangnya. Dalam hal ini compiler juga akan menambahkan karakter null.

data4 bukan string karena ukuran array adalah 7 dan semua terisi dengan karakter non null, sehingga akan menjadi array tipe char.

Mencetak String

Fungsi-fungsi standar seperti printf() dapat digunakan untuk mencetak string ke layar dengan menggunakan format %s.

char str[6] = “Hello”;
printf(“%s”,str);

Kita juga dapat mencetak string dengan mengakses setiap karakter dan mencetak satu persatu ke layar dengan spesisikasi format %c :

char str[6] = “Hello”;
int i=0;
while(str[i] != ‘\0’ )
{
        printf(“%c”,str[i]);
        i=i+1;
}

String Assignment

String tidak dapat di-assignment atau dikopi dengan operator = karena nama string adalah seperti array yang merupakan pointer konstan. C menyediakan fungsi standar untuk memudahkan meng-kopi dari satu string ke string yang lain.

char*strcpy(char*dest,const char*src);

Fungsi ini dapat mengkopi string dari parameter yang dinamai src ke parameter yang dinamai dest.

strcpy() melakukan pengkopian string tanpa memeriksa ukuran array dest, jadi kemungkinan akan overflow jika ukuran dest kurang mencukupi.

char buffer[10];
strcpy(buffer,”Hello”); //ok
strcpy(buffer,”Hello there, how are you?”); //overflow – tidak ok

char*strncpy(char*dest,const char*src,size_ t count);

Fungsi ini lebih aman dari strcpy() karena juga memperhitungkan jumlah maksimal karakter yang dikopi. Fungsi ini akan terus melakukan pengkopian karakter sampai ditemukan karakter null atau sebanyak maksimum karakter yang ditentukan. Jika strncpy() lebih dulu mencapai jumlah maksimum, maka karakter null tidak akan disertakan. Untuk itu kita harus menambahkannya secara manual.

char buffer[10];
strncpy(buffer,”Hello”,9); //ok
strncpy(buffer,”Hello there, how are you?”,9); //Maksimal 10 karakter
buffer[9] = ‘\0’; //karakter ke 9 diganti null

Manipulasi String

Kita dapat melakukan banyak hal dengan string misalnya kita dapat mengetahui panjang suatu string, mencari karakter tertentu, membandingkan dua buah string, serta mencari Fungsi-fungsi ini dideklarasikan dalam header file string.h

size_t strln(const char*str);

Fungsi ini digunakan untuk menentukan sebuah panjang sebuah string tanpa termasuk karakter null.

Contoh :

strln(“Hello”); //menghasilkan 5

char*strrev(char*str);

Fungsi ini berguna untuk membalik semua urutan karakter dalam string str kecuali karakter null.

Contoh :

char buffer[20] = “Hello”;
strrev(buffer); //buffer menjadi = olleH jika di output

char*strcat(char*dest,const char*src);

Fungsi ini digunakan untuk menambahkan string ke dalam buffer string yang lain.

Contoh :

char buffer[80] = “Hello”;
strcat(buffer,”C!”); //Menghasilkan = Hello C! jika di output

char*strchr(const char*str,int c);

Fungsi ini digunakan untuk mencari sebuah karakter pertama dalam string yang sama dengan karakter dalam parameter c dan memberikan nilai balik berupa pointer ke karakter yang ditemukan.

Contoh :

char buffer[80] = “Bahasa Pemrograman C”;
printf(“%s”,strchr(buffer,’P’)); //menampilan Pemrograman C

Untuk mencari karakter terakhir dapap menggunakan strrchr().

int strcmp(const char*str1,const char*str2);

Dalam C kita tidak dapat membandingkan dua buah string dengan menggunakan operator == karena dengan cara itu yang kita bandingkan sebenarnya adalah lokasi memori atau alamat dari variabel itu.

C standard memiliki fungsi untuk membandingkan dua buah string str1 dan str2 dengan memperhitungkan huruf kecil atau besar (case sensitive) sesuai dengan urutanya dalam abjad yang akan menghasilkan nilai balik.

  • Negatif Jika str1 < str2 menurut abjad
  • Nol Jika str1 = str2
  • Positif Jika str1 > str2 menurut abjad

Contoh :

strcmp(“Crash”,”Course”); //Hasilnya positif

Untuk membandingkan dua buah string tanpa memandang case atau case insensitive, dapat menggunakan fungsi stricmp() dengan parameter yang sama.

char*strstr(const char*str,const char*sub);

Fungsi ini berguna untuk mencari substring sebuah string dan jika berhasil memberikan pointer ke awal substring dan null jika gagal.

Pembandingan yang dilakukan adalah case sensitive.

Contoh :

char buffer[80] = “Ini pertama kali aku belajar C”;
char * psub;
psub = strstr(buffer,”kali”);
if (psub != NULL)
{
        printf(“Substring : %s\n”,psub);
}

akan mencetak hasil

kali aku belajar C

size_t strspn(const char*str,const char*cset);

Fungsi ini berguna untuk menentukan lokasi atau index karakter pertama dalam str yang tidak terdapat dalam cset.

Contoh :

char cset[20] = “1234567890”;
char str[20] = “123456h56”;
size_t pos;
pos = strspn(str,cset);
printf(“Not match at : %d”,pos);

akan mencetak nilai 6 yaitu posisi karakter h.

char*strtok(char*str,const char*delim);

fungsi ini berguna untuk mengekstrak substring-substring dalam string yang dipisahkan oleh karakter-karakter dalam parameter delim.

Fungsi ini dapat digunakan sebagai tokenizer dalam pembuatan compiler.

Penggunaan fungsi ini adalah dengan melewatkan pointer ke suatu buffer yang mengandung string str dan parameter delim yang sudah diinisialisasi dengan karakter-karakter pemisah antara substring. Pada pemanggilan berikutnya, lewatkan NULL ke parameter str, maka akan diperoleh substring-substring berikutnya sampai memberikan nilai balik NULL.

Contoh :

char delim[] = ” \t\n”; //pemisah : spasi, tab atau karakter 13
char buffer[80] = “Ini pertama kali aku belajar C”;
char * token;
token = strtok(buffer,delim);
while(token != NULL)
{
        printf(“%s\n”,token);
        token=strtok(NULL,delim);
}

Akan menghasilkan

Ini
pertama
kali
aku
belajar
C

Untuk fungsi-fungsi manipulasi string yang lain dapat dilihat pada referensi standar C atau juga dapat juga menggunakan yang disertai oleh pembuat compiler yang biasanya jumlahnya sangat banyak serta dengan dokumentasi yang jelas.

Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *