Defenisi String
String sebenarnya merupakan penggunaan tipe data char secara berkelompok. Tipe data string merupakan array dari tipe data char, karena string merupakan array dari char, maka pendeklarasian sama dengan mendeklarasikan array dari char.
Untuk menampilkan string yang dikandung oleh sebuah array, karakter format yang dipergunakan adalah "%s". Ketika kita menginstruksikan computer untuk menampilkan string, computer akan memeriksa satu persatu elemen array dan menampilkannya ke layar monitor. Computer akan berhenti memeriksa elemen array yang selanjutnya jika menemukan null character ('\0).
Fungsi – Fungsi dari Librari String
String.h merupakan library yang menyimpan fungsi-fungsi yang digunakan untuk menangani string ataupun substring.
Fungsi – fungsi dala library string.h antara lain : strcpy, strncpy, strcat, strncat, strcmp, strncmp, strlen, strchr.
Inisialisasi String
Cara untuk menginisialisasi string, dapat dilakukan dengan salah satu cara di bawah ini :
char nama[]="Ini adalah string";
char nama2[]={'i','n','i', ' ','s','t','r','i','n','g','\0'};
char nama3[5]="BUDI";
char nama4[5]={'B','u','d','i','\0'}
char *nama5="Ini juga string";
Untuk mengisi suatu string caranya adalah :
strcpy(nama,"Ini string");
nama5="Ini juga string";
Coba diperhatikan, untuk string yang dideklarasikan sebagai sebuah array karakter, pengisian nilainya adalah dengan menggunakan suatu perintah strcpy yang berguna untuk mengisikan suatu string ke string lain. Pengisiannya tidak boleh langsung. Tetapi jika string dideklarasikan sebagai sebuah pointer karakter, maka pengisiannya boleh diisikan secara langsung.
Input-output data string
Untuk memasukkan atau menampilkan data String bisa digunakan beberapa fungsi standar yang ada di stdio.h.
Untuk operasi input :
– scanf()
Ketika memakai scanf(), data string masukan tidak boleh mengandung spasi, sebagai contoh sebagai berikut :
#include
main()
{
char name[15];
printf("Masukkan nama Anda : ");
scanf("%s",name);
printf("\nHalo, %s. Selamat belajar string.\n", name);
getch();
}
Output :
Coding diatas adalah memasukkan string menggunakan fungsi scanf(), ketika kita memasukkan string dengan karakter spasi dalam string, karakter string spasi dan setelahnya tidak akan terbaca.
– gets()
Sedangkan menggunakan fungsi gets() untuk memasukkan string, kita boleh menggunakan karakter spasi, sebagai contoh codingnya sebagai berikut :
#include
main()
{
char name[15];
printf("Masukkan nama Anda : ");
gets(name);
printf("\nHalo, %s. Selamat belajar string.\n", name);
getch();
}
Output :
– fgets()
Fungsi gets() akan membaca seluruh karakter yang diketik melalui keyboard sampai tombol ENTER dan tekandengan tanpa mengecek batasan panjang array yang merupakan argumennya. Jika string yang dimasukkan melebihi ukuran array, maka sisa string ( panjang string masukan dikurangi ukuran array plus karakter NULL) akan ditempatkan dilokasi sedudah bagian lain dari array tersebut. Jika terjadi seperti ini, untuk mengatasinya, disarankan menggunakan fungsi fgets() untuk menggantikan fungsi gets() tadi dalam memasukkan data string.
#include
main()
{
char name[15];
printf("Masukkan nama Anda : ");
fgets(name, sizeof name,stdin);
printf("\nHalo, %s. Selamat belajar string.\n", name);
getch();
}
Output :
Untuk operasi output :
– puts()
Untuk menampilkan isi variable string, fungsi yang digunakan adalah puts() atau printf(). Bentuk umum penggunaannya adalah sebagai berikut :
#include
puts(var_string);
atau
printf("%s", var_string);
var string adalah sebuah variable yang berupa sebuah array dari tipe data char.
fungsi puts() akan menampilkan isi dari var_string dan secara otomatis menambahkan karakter '\n' diakhir string.
– printf()
Fungsi print akan menampilkan isi variable string tanpa memberikan tambahan '\n'. Sehingga, agar kedua pernyataan diatas memberikan keluaran yang sama, maka pada pernyataan printf() dirubah menjadi :
Printf("%s\n", var_string);
Memasukkan Data String
Pemasukan data string ke dalam suatu variabel biasa dilakukan dengan fungsi gets() atau scanf(). Bentuk umum pemakaiannya adalah sebagai berikut :
#include
gets(nama_array);
atau
#include
scanf("%s", nama_arra
y);
Perhatikan :
Nama_array adalah variabel bertipe array of char yang akan digunakan untuk menyimpan string masukan.
Di depan nama_array tidak perlu ada operator & (operator alamat), karena nama_array tanpa kurung siku sudah menyatakan alamat yang ditempati oleh
elemen pertama dari array tsb.
Kalau memakai scanf(), data string masukan tidak boleh mengandung spasi
main()
{
char name[15];
printf("Masukkan nama Anda : ");
gets(name);
printf("\nHalo, %s. Selamat belajar string.\n", name);
}
Contoh output :
masukkan nama anda : SAIFUDDIN
Halo, SAIFUDDIN. Selamat belajar string.
Perlu diketahui, fungsi gets() akan membaca seluruh karakter yang diketik melalui keyboard sampai tombol ENTER ditekan dengan tanpa mengecek batasan panjang array yang merupakan argumennya. Jika string yang dimasukkan melebihi ukuran array, maka sisa string (panjang string masukan dikurangi ukuran array plus karakter NULL) akan ditempatkan di lokasi sesudah bagian akhir dari array tersebut. Tentu saja kejadian seperti ini bisa menimbulkan hal yang tidak diinginkan, misalnya berubahnya isi variabel yang dideklarasikan sesudah array tersebut karena tertumpuki oleh string yang dimasukkan (overwrite), atau perilaku program yang sama sekali berbeda dengan kemauan user yang dalam hal ini pelacakan kesalahannya (debugging) sangat sulit dilakukan, atau bahkan terjadi penghentian program secara tidak normal. Untuk mengatasi hal itu, disarankan untuk menggunakan fungsi fgets() untuk menggantikan fungsi gets() dalam memasukkan data string. Bentuk umum pemakaian fgets() adalah :
#include
fgets(nama_array, sizeof nama_array, stdin);
contoh eksekusi dengan gets ( ) :
#include Outputnya :
#define MAKS 5
main(){
char kar = 'P';
char nama[MAKS];
printf("Karakternya = %c\n", kar);
printf("Masukkan nama Anda : ");
gets(nama);
printf("\nNama Anda = %s\n", nama);
printf("Karakternya = %c\n", kar);
}
Menampilkan Data String
Untuk menampilkan isi variabel string, fungsi yang digunakan adalah puts() atau printf(). Bentuk umum pemakaiannya adalah sebagai beriku:
#include
puts(var_string);
atau
printf("%s",var_string);
Dalam hal ini var_string adalah sebuah variabel yang berupa sebuah
array of char. Fungsi puts() akan menampilkan isi dari var_string dan secara otomatis menambahkan karakter '\n' di akhir string. Sedangkan fungsi printf() akan menampilkan isi variabel string tanpa memberikan tambahan '\n'. Sehingga, agar kedua pernyataan di atas memberikan keluaran yang sama, maka pada pernyataan printf() dirubah menjadi :
printf("%s\n", var_string);
Mengakses Elemen String
Variabel string merupakan bentuk khusus dari array bertipe char. Oleh karena itu, elemen dari variable string dapat diakses seperti halnya pengaksesan elemen pada array. Perhitungan jumlah karakter dari string teks dapat dilakukan dengan memeriksa elemen dari string dimulai dari posisi yang pertama (indeks ke-0) sampai ditemukannya karakter NULL. Program berikut menunjukkan cara mengakses elemen array untuk menghitung total karakter dari string yang dimasukkan melalui keyboard.
Contoh mengakses elemen string :
#include
#define MAKS 256
main()
{
int i, jumkar = 0;
char teks[MAKS];
puts("Masukkan suatu kalimat (maks 255 karakter).");
puts("Saya akan menghitung jumlah karakternya.\n");
fgets(teks, sizeof teks, stdin);
for(i=0; teks[i]!='\0'; i++)
jumkar++;
printf("\nJumlah karakter = %d\n", jumkar);
}
Fungsi-fungsi string
strcpy
char * strcpy ( char * destination, const char * source );
Fungsi di atas berguna untuk menduplikat (meng-copy) isi dari suatu string ke string lain. Paramaternya adalah string yang pertama adalah string tujuan duplikasi dan string kedua adalah string yang menjadi sumber duplikasi. Contoh program:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/* strcpy example */
#include
#include
int main ()
{
char str1[]="Sample string";
char str2[40];
char str3[40];
strcpy (str2,str1);
strcpy (str3,"copy successful");
printf ("str1: %s\nstr2: %s\nstr3: %s\n",str1,str2,str3);
return 0;
}
Output:
str1: Sample string
str2: Sample string
str3: copy successful
strtok
char * strtok ( char * str, const char * delimiters );
Fungsi strtok adalah membagi string menjadi beberapa bagian yang dibatasi oleh karakter yang telah ditentukan.
Contoh:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/* strtok example */
#include
#include
int main ()
{
char str[] ="- This, a sample string.";
char * pch;
printf ("Splitting string \"%s\" into tokens:\n",str);
pch = strtok (str," ,.-");
while (pch != NULL)
{
printf ("%s\n",pch);
pch = strtok (NULL, " ,.-");
}
return 0;
}
Output:
Splitting string "- This, a sample string." into tokens:
This
a
sample
string
Pada contoh di atas, kita memiliki string sample. Pada fungsi strtok, kita membagi string tadi menjadi beberapa bagian dengan pembatas karakter yaitu ".,-". Kita akan mendapatkan 3 buah string pecahan.
strncpy
char * strncpy ( char * destination, const char * source, size_t num );
Fungsi dari strncpy hampir sama dengan strcpy, bedanya adalah kalau menggunakan strcpy, seluruh string akan diduplikat pada string yang baru, sementara kalau menggunakan strncpy, kita bisa memilih berapa karakter yang akan kita pilih.
Contoh:
1
2
3
4
5
6
7
8
9
10
11
12
13
/* strncpy example */
#include
#include
int main ()
{
char str1[]= "To be or not to be";
char str2[6];
strncpy (str2,str1,5);
str2[5]='\0';
puts (str2);
return 0;
}
Output:
To be
Program di atas akan memilih 5 karakter pertama dari string yang telah ditentukan dan dipindahkan ke dala string baru.
strlen
size_t strlen ( const char * str );
Fungsi strlen adalah mengembalikan nilai dari panjang karakter dari suatu string.
Contoh:
1
2
3
4
5
6
7
8
9
10
11
12
/* strlen example */
#include
#include
int main ()
{
char szInput[256];
printf ("Enter a sentence: ");
gets (szInput);
printf ("The sentence entered is %u characters long.\n",strlen(szInput));
return 0;
}
Output:
Enter sentence: just testing
The sentence entered is 12 characters long.
strcat
char * strcat ( char * destination, const char * source );
Fungsi dari strcat adalah menyatukan beberapa string menjadi sebuah string yang utuh.
Contoh:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/* strcat example */
#include
#include
int main ()
{
char str[80];
strcpy (str,"these ");
strcat (str,"strings ");
strcat (str,"are ");
strcat (str,"concatenated.");
puts (str);
return 0;
}
Output:
these strings are concatenated.
Strcmp
Berfungsi untuk membandingkan 2 buah string. Hasil dari fungsi ini bertipe integer dengan nilai:
Negative, bila string pertama kurang dari string kedua.
Nol, bila string pertama sama dengan string kedua
Positif, bila string pertama lebih banyak dari string kedua.
Bentuk umumnya : strcmp(string1, string2);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* strcmp example */
#include
#include
int main (void)
{
char *buf1="aaa ",*buf2="bbb ",*buf3="ccc ";
int ptr;
ptr=strcmp(buf2,buf1);
if (ptr>0)
printf("Buffer 2 lebih besar dari buffer 1 \n");
else
printf("Buffer 2 lebih kecil dari buffer 1 \n");
ptr=strcmp(buf2,buf3);
if (ptr>0)
printf("Buffer 2 lebih besar dari buffer 3 \n");
else
printf("Buffer 2 lebih kecil dari buffer 3 \n");
return 0;
}
Output:
Buffer 2 lebih besar dari buffer 1
Buffer 2 lebih kecil dari buffer 3.
Strchr
Fungsi strchr adalah Struktur perulangan untuk mengganti karatkter dengan menggunakan fungsi yang berguna untuk menentukan lokasi sebuah karakter didalam sebuah string.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/* strchr example */
#include
#include
int main ()
{
char str[] = "Ini adalah sebuah contoh string";
char * pch;
printf ("Melihat karakter 's' di \"%s\"...\n",str);
pch=strchr(str,'s');
while (pch!=NULL)
{
printf ("ditemukan di %d\n",pch-str+1);
pch=strchr(pch+1,'s');
}
return 0;
}
Output:
ditemukan di 12
ditemukan di 26.