Artikel ini berisi pembahasan bagaimana untaian karakter (string) bisa dimanipulasi dalam program C.
- 8.1. Membaca Kalimat [ video ]
- 8.2. Menyalin Kalimat [ video ]
- 8.3. Menyatukan Kalimat [ video ]
- 8.4. Menemukan Subkalimat [ video ]
- 8.5. Melakukan Validasi Kalimat [ video ]
- 8.6. Melakukan Konversi Kalimat [ video ]
- 8.7. Ringkasan
Catatan:
- Silahkan Anda mengeklik icon menu
untuk berpindah subbagian.
- Video pelengkap dalam tutorial ini akan lebih jelas dilihat dengan resolusi 720p dan mode Full screen.

8.1. Membaca Kalimat
Dalam pemrograman C, sebuah kalimat merupakan sebuah larik karakter-karakter yang memiliki karakter khusus \0 null
pada anggota akhirnya. Masing-masing karakter, termasuk tanda baca dan karakter nircetak (non printing) seperti misalnya newline memiliki sebuah nilai numerik kode ASCII unik. Itu artinya bahwa karakter-karakter bisa diganti secara aritmetis. Sebagai contoh, saat char v__huruf = 'S'
maka v__huruf++
mengganti nilainya menjadi 'T'
.
Nilai-nilai kode ASCII untuk huruf kecil selalu 32 lebih besar daripada huruf kapital sehingga dalam hal sembarang karakter bisa diganti dengan menambahkan atau menguranginya dengan nilai 32. Sebagai contoh, saat char v__huruf = 'M'
maka v__huruf += 32
menggantinya menjadi 'm'
.
Mengingat C tidak memiliki sebuah tipe data kalimat sendiri maka variabel dengan tipe data string
harus dibuat sebagai sebuah larik karakter, dan ingatlah untuk menambahkan sebuah anggota akhir karakter \0 null
untuk menaikkan status larik menjadi konstanta string
. Itu artinya bahwa nama sebuah larik berlaku sebagai sebuah pointer pada seluruh untaian karakter. Sebuah kalimat bisa disematkan ke sebuah larik atau sebuah pointer bertipe data char
seperti berikut:
char v__larik_huruf[4] = { 'B' , 'e' , 't' , 'a' } ;
char *p__kata = "Gamma" ;
printf( "%s" , v__larik_huruf ) ; /* keluaran: "Beta" */
printf( "%s" , p__kata ) ; /* keluaran: "Gamma" */
Nilai-nilai kalimat dapat diperkenalkan ke sebuah program C melalui masukan dari pengguna menggunakan fungsi scanf()
seperti yang telah dijelaskan dalam Bagian 2. Fungsi tersebut bekerja dengan baik untuk karakter tunggal atau beberapa karakter yang membentuk kata tunggal.
Sebagai hal penting, scanf()
memiliki beberapa keterbatasan yaitu ia akan berhenti membaca ketika menjumpai sebuah spasi. Itu artinya bahwa pengguna tidak bisa memasukkan sebuah kalimat melalui scanf()
karena untaian huruf akan dipotong pada spasi yang mengikuti atau berada di belakang kata pertama.
Solusi untuk masalah scanf()
disediakan oleh dua fungsi alternatif yang terletak di berkas header stdio.h
. Fungsi pertama tersebut dinamakan fgets()
dan digunakan untuk membaca masukan dari pengguna. Ia menerima semua karakter, termasuk spasi, dan menyematkan kalimat ke sebuah larik karakter tertentu sebagai argumen.
Ia juga secara otomatis menambahkan karakter \0 null
pada akhir kalimat ketika pengguna menekan tombol Return
— untuk menjamin masukan memiliki status konstanta string
. Pasangan fgets()
adalah fungsi fputs()
yang mengeluarkan sebuah kalimat tertentu sebagai argumennya dan secara otomatis menambahkan sebuah karakter newline atau baris baru pada bagian akhirnya.
-
Mulailah membuat sebuah program baru dengan sebuah instruksi prapemroses untuk mengikutsertakan fungsi-fungsi masukan/keluaran standar.
#include <stdio.h>
-
Tambahkan sebuah fungsi
main()
yang mendeklarasikan sebuah larik karakter.int main() { char v__larik_karakter[31] ; }
-
Selanjutnya dalam blok fungsi
main()
, mintalah masukan dari pengguna dan sematkan ke variabel larik.printf( "\nMasukkan paling banyak 30 karakter dengan spasi:\n" ) ; fgets( v__larik_karakter , 31 , stdin ) ;
-
Sekarang dalam blok fungsi
main()
, berikan keluaran kalimat yang disimpan dalam variabel larik.printf( "fgets() membaca: " ) ; fputs( v__larik_karakter , stdout ) ;
-
Ulangilah prosesnya untuk melihat keterbatasan
scanf()
.printf( "\nMasukkan paling banyak 30 karakter dengan spasi: \n" ) ; scanf( "%s" , v__larik_karakter ) ; printf( "scanf() membaca: %s\n\n" , v__larik_karakter ) ;
-
Pada akhir blok fungsi
main()
berikan keluaran sebuah bilangan bulat nol seperti yang disyaratkan dalam pendeklarasian fungsi.return 0 ;
-
Simpanlah berkas program kemudian kompilasi dan jalankan program untuk melihat keluaran-keluaran untaian karakter.
Secara keseluruhan, Anda dapat melihat langkah-langkah tersebut dalam Video 8.1 (silahkan Anda pilih mode Full screen dan resolusi 720p untuk tampilan video yang lebih jelas):

8.2. Menyalin Kalimat
Pustaka-pustaka standar C mengikutsertakan sebuah berkas header bernama string.h
yang berisi fungsi-fungsi khusus untuk menangani untaian karakter. Untuk membuatnya tersedia bagi sebuah program maka berkas header string.h
harus ditambahkan dengan sebuah direktif #include
pada awal program.
Salah satu fungsi dalam berkas string.h
adalah strlen()
yang bisa digunakan untuk menemukan panjang atau banyak karakter dalam sebuah untaian karakter yang dimasukkan ke dalam argumennya. Fungsi strlen()
memberikan keluaran sebuah bilangan bulat yang merupakan banyak semua karakter dalam kalimat — termasuk karakter spasi, namun mengecualikan karakter \0 null
.
Berkas header string.h
juga menyediakan dua fungsi yang berguna untuk menyalin kalimat dari satu larik ke larik lainnya. Fungsi pertama adalah strcpy()
yang membutuhkan dua buah argumen sebagai masukan. Argumen pertama merupakan nama larik tujuan, tempat kalimat akan disalin ke dalamnya, dan argumen yang kedua merupakan larik sumber atau asal dari mana kalimat disalin. Sintaksnya akan terlihat sebagai berikut:
strcpy( larik-tujuan , larik-asal ) ;
Semua karakter dalam larik asal disalin ke larik tujuan termasuk karakter pengakhir \0 null
. Apabila ada anggota lain setelah karakter null
maka ia juga akan ditambahkan setelahnya dengan \0
. Itu untuk menjamin sisa dari sebuah kalimat asli yang lebih panjang dibuang ketika sebuah kalimat yang lebih pendek disalin ke dalam sebuah larik.
Fungsi penyalin kalimat kedua memiliki nama yang hampir mirip bernama fungsi strncpy()
(dengan tambahan sebuah “n”). Ia digunakan seperti strcpy()
namun memiliki argumen ketiga berupa berapa banyak untaian karakter yang disalin. Sintaksnya terlihat sebagai berikut:
strncpy( larik-tujuan , larik-asal , banyak-karakter )
Untaian karakter yang sedang disalin akan berawal dengan karakter pertama larik asal namun akan berakhir pada posisi yang ditentukan oleh argumen ketiga — sehingga karakter \0 null
paling akhir tidak secara otomatis disalin. Setelah karakter disalin maka anggota selanjutnya pada larik tujuan harus disematkan dengan sebuah karakter \0 null
pengakhir untuk memberi larik status sebagai konstanta kalimat.
Oleh karenanya, perlu untuk menjamin bahwa larik tujuan anggotanya selalu satu lebih banyak daripada banyak karakter aktual yang sedang disalin ke dalamnya, termasuk karakter-karakter spasi, untuk mengakomodasi karakater \0 null
paling akhir.
-
Mulailah membuat sebuah program baru dengan sebuah instruksi prapemroses untuk mengikutsertakan fungsi-fungsi dalam pustaka masukan/keluaran standar.
#include <stdio.h> #include <string.h>
-
Tambahkan sebuah fungsi
main()
yang mendeklarasikan dan menginsialisasi dua variabel larik karakter dengan kalimat-kalimat.int main() { char v__larik_kalimat_1[] = "Indonesia memiliki ribuan pulau." , v__larik_kalimat_2[] = "Setiap pulau memiliki keunikan." ; }
-
Selanjutnya dalam blok fungsi
main()
, berikan keluaran isi larik pertama bersama dengan ukuran dan banyak untaian karakternya.printf( "\n%s: %ld anggota" , v__larik_kalimat_1 , sizeof( v__larik_kalimat_1 ) ) ; printf(", %ld karakter\n" , strlen( v__larik_kalimat_1 ) ) ;
-
Sekarang dalam blok fungsi
main()
, salinlah seluruh isi larik kedua ke dalam larik pertama.strcpy( v__larik_kalimat_1 , v__larik_kalimat_2 ) ;
-
Ulangilah langkah 3 untuk memberikan keluaran karakteristik larik pertama sekali lagi, kemudian salin empat karakter awal larik kedua ke dalam larik pertama dan tambahkan sebuah pengakhir
null
.strncpy( v__larik_kalimat_1 , v__larik_kalimat_2 , 4 ) ; v__larik_kalimat_1[4] = '\0' ;
-
Ulangilah langkah 3, untuk memberikan keluaran karakteristik larik pertama sekali lagi, kemudian berikan keluaran akhir bilangan bulat nol yang disyaratkan.
return 0 ;
-
Simpanlah berkas program kemudian kompilasi dan jalankan program untuk melihat untaian karakter yang disalin.
Secara keseluruhan, Anda dapat melihat langkah-langkah tersebut dalam Video 8.2 (silahkan Anda pilih mode Full screen dan resolusi 720p untuk tampilan video yang lebih jelas):

8.3. Menyatukan Kalimat
Penyatuan dua untaian karakter ke dalam untaian karakter tunggal lebih tepat dikenal sebagai “perangkaian (concatenation)” untaian karakter.
Pustaka standar C berkas header string.h
mengandung dua fungsi yang dapat digunakan untuk merangkai untaian karakter. Untuk membuatnya tersedia bagi sebuah program maka berkas header string.h
harus ditambahkan dengan sebuah direktif #include
pada bagian awal program.
Fungsi perangkai untaian karakter yang pertama adalah strcat()
yang membutuhkan dua argumen untuk menyatakan nama dua kalimat yang nanti dirangkai. Untaian karakter pada argumen kedua dilekatkan setelah untaian karakter argumen pertama kemudian fungsi memberikan keluaran keseluruhan rangkaian untaian karakter pertama. Bentuk sintaksnya terlihat sebagai berikut:
strcat( untaian-karakter-pertama , untaian-karakter-yang-ditambahkan-ke-untaian-karakter-pertama )
Sebagai catatan penting, bahwa larik untaian karakter pertama harus cukup besar untuk mengakomodasi semua karakter untaian karakter yang dirangkai untuk menghindari kesalahan.
Fungsi perangkai untaian karakter kedua memiliki nama fungsi yang mirip strncat()
(dengan sebuah tambahan “n”). Ia digunakan seperti layaknya fungsi strcat()
namun memiliki sebuah argumen ketiga untuk menentukan berapa banyak karakter untaian karakter kedua yang harus dilekatkan ke untaian karakter pertama. Sintaksnya dapat dilihat sebagai berikut:
strncat( untaian-karakter-pertama , untaian-karakter-yang-ditambahkan-ke-untaian-karakter-pertama, banyak-karakter )
Untaian karakter yang dilekatkan akan berawal dari karakter pertama untaian karakter yang ditentukan oleh argumen kedua dan berakhir pada posisi yang ditentukan oleh argumen ketiga. Namun mengingat nama untaian karakter merupakan sebuah pointer bagi karakter pertamanya maka aritmetika pointer bisa digunakan untuk mengindikasikan sebuah posisi berbeda pada posisi mana pelekatan dimulai, sintaksnya seperti berikut:
strncat( untaian-karakter-pertama , (untaian-karakter-yang-ditambahkan-ke-untaian-karakter-pertama + posisi), banyak-karakter )
Sekali lagi, seperti pada fungsi strcat
, merupakan hal yang penting bahwa larik untaian karakter pertama harus cukup besar untuk mengakomodasi semua karakter untaian karakter yang dirangkai untuk menghindari kesalahan saat menggunakan fungsi strncat()
.
-
Mulailah membuat sebuah program baru dengan sebuah instruksi prapemroses untuk mengikutsertakan fungsi-fungsi masukan/keluaran standar.
#include <stdio.h> #include <string.h>
-
Tambahkan sebuah fungsi
main()
yang mendeklarasikan dan menginisialisasi empat variabel larik karakter dengan kalimat tertentu.int main() { char v__kalimat_1[100] = "Kami tidak tahu, " ; char v__kalimat_2[] = "Kami tidak lagi bisa berkata" ; char v__kalimat_3[100] = "Kaulah sekarang yang berkata " ; char v__kalimat_4[] = "dan Kami bicara padamu -- Chairil Tanjung" ; }
-
Selanjutnya, dalam blok fungsi
main()
, lekatkan untaian karakter kedua ke pertama dan berikan keluaran untaian karakter yang dirangkai.strcat( v__kalimat_1 , v__kalimat_2 ) ; printf( "\n%s\n" , v__kalimat_1 ) ;
-
Lekatkan 22 karakter pertama untaian karakter keempat ke ketiga dan berikan keluaran untaian karakter yang dirangkai.
strncat( v__kalimat_3, v__kalimat_4 , 22 ) ; printf( "\n%s\n" , v__kalimat_3 ) ;
-
Lekatkan 12 karakter kalimat keempat ke ketiga dan berikan keluaran untaian karakter yang dirangkai.
strncat( v__kalimat_3 , ( v__kalimat_4 + 22 ) , 19 ) ; printf( "\n%s\n" , v__kalimat_3 ) ;
-
Pada akhir blok fungsi
main()
, berikan keluaran sebuah bilangan bulat nol seperti yang disyaratkan pada saat pendeklarasian fungsi.return 0 ;
-
Simpanlah berkas program kemudian kompilasi dan jalankan program untuk melihat untaian-untaian karakter yang dirangkai.
Secara keseluruhan, Anda dapat melihat langkah-langkah tersebut dalam Video 8.3 (silahkan Anda pilih mode Full screen dan resolusi 720p untuk tampilan video yang lebih jelas):

8.4. Menemukan Subkalimat
Sebuah untaian karakter bisa dicari untuk menentukan apabila ia mengandung sederet “sub untaian karakter” tertentu dengan sebuah fungsi bernama strstr
. Ia merupakan bagian dari berkas header pustaka standar string.h
yang harus ditambahkan dengan sebuah direktif #include
pada awal program sehingga membuat strstr()
tersedia.
Fungsi strstr()
memiliki dua buah argumen — yang pertama berupa untaian karakter yang hendak dicari, dan yang kedua berupa sub untaian karakter pencarian. Apabila sub untaian karakter tidak ditemukan maka fungsi memberikan keluaran sebuah nilai NULL
. Apabila sebaliknya, yaitu ditemukan maka fungsi akan memberikan keluaran berupa sebuah pointer karakter pertama sub untaian karakter yang pertama kali muncul.
Dalam pemrograman C, operator perbandingan ==
dan !=
bisa digunakan untuk membandingkan sebuah hasil terhadap sebuah nilai NULL
namun tidak bisa digunakan untuk membandingkan dua untaian karakter. Alih-alih, berkas header pustaka standar string.h
menyediakan sebuah fungsi bernama strcmp()
untuk tujuan itu.
Fungsi tersebut memiliki dua buah argumen, berupa dua untaian karakter yang nantinya dibandingkan. Perbandingan dibuat berdasarkan nilai numerik kode ASCII setiap karakter dan posisi mereka. Saat untaian-untaian karakter identik dari segala hal, termasuk pencocokan huruf besar-kecil, maka strcmp()
memberikan keluaran bilangan nol. Sebaliknya, fungsi akan memberikan keluaran sebuah bilangan bulat positif atau negatif tergantung nilai-nilai untaian karakter.
-
Mulailah membuat sebuah program baru dengan sebuah instruksi prapemroses untuk mengikutsertakan fungsi-fungsi masukan/keluaran dan untaian karakter standar.
#include <stdio.h> #include <string.h>
-
Tambahkan sebuah fungsi
main()
yang mendeklarasikan dan menginisialisai dua variabel larik karakter dengan untaian-untaian karakternya.int main() { char v__larik_kalimat[] = "Ibu membeli apel di toko buah." ; char v__larik_subkalimat[] = "apel"; }
-
Selanjutnya, dalam blok fungsi
main()
berikan keluaran sebuah pesan apabila nilai untaian karakter kedua tidak ditemukan di dalam untaian karakter pertama.if( strstr( v__larik_kalimat , v__larik_subkalimat ) == NULL ) { printf( "\nSub untaian karakter \"apel\" tidak ditemukan.\n" ) ; }
-
Sekarang tambahkan pernyataan-pernyataan untuk memberikan keluaran alamat memori dan nomor indeks anggota dalam untaian karakter pertama tempat karakter pertama sub untaian karakter yang ditemukan muncul.
else { printf( "\nSub untaian karakter \"apel\" ditemukan di %p\n" , strstr( v__larik_kalimat , v__larik_subkalimat) ) ; printf( "Nomor indeks anggota : %ld\n\n" , strstr( v__larik_kalimat , v__larik_subkalimat ) - v__larik_kalimat ) ; }
-
Berikan keluaran hasil tiga perbandingan yang dibuat terhadap nilai untaian karakter kedua.
printf( "%s vs \"apel\": %d\n" , v__larik_subkalimat , strcmp(v__larik_subkalimat , "apel") ) ; printf( "%s vs \"Apel\": %d\n" , v__larik_subkalimat , strcmp(v__larik_subkalimat , "Apel") ) ; printf( "%s vs \"APEL\": %d\n\n" , v__larik_subkalimat , strcmp(v__larik_subkalimat , "APEL") ) ;
-
Pada akhir blok fungsi
main()
berikan keluaran sebuah bilangan bulat nol seperti yang disyaratkan pada saat pendeklarasian fungsi.return 0 ;
-
Simpanlah berkas program kemudian kompilasi dan jalankan program untuk melihat hasil-hasil pencarian untuk sebuah sub untaian karakter dan perbandingan nilai tiga buah untaian karakter.
Secara keseluruhan, Anda dapat melihat langkah-langkah tersebut dalam Video 8.4 (silahkan Anda pilih mode Full screen dan resolusi 720p untuk tampilan video yang lebih jelas):

8.5. Melakukan Validasi Kalimat
Berkas header pustaka standar bernama ctype.h
berisi sejumlah fungsi yang berguna untuk melakukan pengujian-pengujian pada karakter-karakter. Untuk membuatnya tersedia pada sebuah program maka berkas header ctype.h
harus ditambahkan dengan sebuah direktif #include
pada awal program.
Dalam berkas header ctype.h
, fungsi isalpha()
menguji apakah sebuah karakter merupakan alfabet atau bukan, sementara fungsi isdigit()
menguji apakah sebuah karakter merupakan numerik atau bukan. Demikian pula fungsi ispunct()
menguji apakah sebuah karakter merupakan sebuah tanda baca atau bukan, misalnya ! " # $ % & ' ( ) * +, - . / : ; ? @ [ \ ] ^ _ ` { | } ~
. Sementara, fungsi isspace()
menguji apakah sebuah karakter sesungguhnya merupakan sebuah spasi.
Sebagai tambahan, header ctype.h
menyediakan fungsi isupper()
dan islower()
untuk menguji kapital-kecil sebuah karakter, bersama dengan fungsi toupper()
dan tolower()
untuk mengubah kapital-kecilnya karakter.
Setiap fungsi uji akan memberikan keluaran yang tidak bernilai nol (tidak selalu sebuah bilangan 1) saat karakter uji seperti yang diharapkan, namun selalu memberikan keluaran sebuah nol apabila tidak sesuai yang diharapkan.
Fungsi-fungsi penguji bisa digunakan untuk melakukan validasi untaian karakter yang diberikan oleh pengguna dengan melakukan perulangan pada karakter-karakter dalam untaian karakter untuk memeriksanya satu per satu. Saat sebuah karakter tidak memenuhi kondisi yang dibutuhkan maka sebuah variabel “tanda (flag)” bisa diberikan untuk memberitahu pengguna bahwa masukannya tidak valid.
-
Mulailah membuat sebuah program baru dengan sebuah instruksi prapemroses untuk mengikutsertakan fungsi-fungsi masukan/keluaran dan untaian karakter standar.
#include <stdio.h> #include <string.h> #include <ctype.h>
-
Tambahkan sebuah fungsi
main()
yang mendeklarasikan tiga variabel, dan insialisasikan sebuah variabel tanda dengan sebuah nilai numerik untuk nilai benar (1).int main() { char v__larik_kalimat[7] ; int i ; int v__tanda = 1 ; }
-
Selanjutnya dalam blok fungsi
main()
, mintalah masukan dari pengguna kemudian sematkan masukan tersebut sebagai sebuah variabel larik untaian karakter.fputs( "Masukkan enam digit (angka) tanpa spasi :" , stdout ) ; fgets( v__larik_kalimat , 7 , stdin ) ;
-
Sekarang dalam blok fungsi
main()
, tambahkan sebuah perulangan untuk memeriksa setiap karakter dalam variabel larik.for( i = 0; i < 6; i++ ) { }
-
Dalam blok perulangan ubahlah variabel tanda menjadi bernilai salah (0) apabila ada karakter yang bukan merupakan sebuah bilangan atau numerik.
if( !isdigit(v__larik_kalimat[i]) ) { v__tanda = 0 ; }
-
Selanjutnya dalam blok
if
, berikan penjelasan untuk karakter bukan bilangan.if( isalpha( v__larik_kalimat[i] ) ) { printf( "Huruf %c ditemukan.\n" , toupper( v__larik_kalimat[i] ) ) ; } else if( ispunct(v__larik_kalimat[i]) ) { printf( "Simbol tanda baca ditemukan.\n" ) ; } else if( isspace(v__larik_kalimat[i]) ) { printf( "Spasi ditemukan.\n" ) ; }
-
Setelah blok perulangan berikan keluaran sebuah pesan yang menjelaskan keadaan variabel tanda.
( v__tanda ) ? fputs( "Masukan benar.\n\n" , stdout ) : fputs( "Masukan salah.\n\n" , stdout ) ;
-
Pada akhir blok fungsi
main()
berikan keluaran sebuah nilai bilangan bulat nol seperti yang disyaratkan pada saat pendeklarasian fungsi.return 0 ;
-
Simpanlah berkas program kemudian kompilasi dan jalankan program untuk melihat validasi masukan untaian karakter.
Secara keseluruhan, Anda dapat melihat langkah-langkah tersebut dalam Video 8.5 (silahkan Anda pilih mode Full screen dan resolusi 720p untuk tampilan video yang lebih jelas):

8.6. Melakukan Konversi Kalimat
Berkas pustaka standar bahasa C stdlib.h
berisi sebuah fungsi bernama atoi()
yang digunakan untuk mengonversi sebuah alfabet menjadi sebuah bilangan bulat. Untuk membuat fungsi ini tersedia bagi sebuah program maka berkas stdlib.h
harus ditambahkan dengan sebuah direktif #include
pada awal program.
Fungsi atoi()
, alfabet-ke-bilangan bulat, mengambil sebuah kalimat untuk dikonversi sebagai argumen atau masukan tunggalnya. Apabila kalimatnya kosong, atau apabila karakter pertama kalimat bukan merupakan sebuah bilangan atau berupa sebuah tanda minus, maka atoi()
akan mengeluarkan nilai nol.
Sebaliknya apabila ada kalimat, atau paling tidak bilangan yang diawali dengan kalimat maka ia akan dikonversi ke sebuah tipe data bilangan bulat (int
) hingga atoi()
berjumpa dengan sebuah karakter nirbilangan dalam kalimat. Saat atoi()
berjumpa dengan karakter nirbilangan dalam kalimat maka ia akan mengeluarkan bilangan sejauh yang dikonversi sebagai sebuah tipe data int
.
Kemudian ada juga sebuah fungsi yang bernama itoa()
, bilangan bulat-ke-alfabet, yang digunakan untuk mengonversi sebuah tipe data int
ke sebuah kalimat atau untaian karakter. Fungsi ini cukup luas digunakan namun bukanlah bagian spesifikasi ANSI C yang standar.
Fungsi itoa()
membutuhkan tiga argumen, yang pertama merupakan bilangan yang dikonversi, kemudian kalimat untuk bilangan konversi mana yang akan disematkan, dan terakhir basis yang digunakan untuk proses konversi. Sebagai contoh, sebuah basis 2 akan menyematkan bilangan biner yang ekuivalen terhadap argumen bilangan tertentu untuk argumen kalimat tertentu.
Sebuah alternatif ANSI yang sesuai untuk fungsi itoa()
adalah fungsi sprintf()
yang ada di dalam berkas header stdlib.h
. Namun ia memiliki kekurangan, yaitu kita tidak bisa menyertakan sebuah nilai basis. Fungsi sprintf()
juga mengambil tiga masukan — yaitu kalimat yang bilangan konversinya disematkan, sebuah penentu format, dan bilangan yang dikonversi. Fungsi tersebut akan mengeluarkan sebuah bilangan bulat yang merupakan karakter bilangan dalam kalimat yang dikonversi.
-
Mulailah membuat sebuah program baru dengan sebuah instruksi prapemroses untuk mengikutsertakan fungsi masukan/keluaran dan konversi standar.
#include <stdio.h> #include <stdlib.h>
-
Tambah sebuah fungsi
main()
yang mendeklarasikan tiga variabel bilangan bulat atau bertipe dataint
, kemudian deklarasikan dan inisialisasikan tiga larik karakter atau bertipe datachar
.int main() { int v__n_1, v__n_2, v__n_3 ; char v__k_1[10] = "10lima", v__k_2[10] = "-3.14", v__k_3[10] = "m25" ; }
-
Sekarang di dalam blok fungsi
main()
, kita mencoba untuk mengonversi setiap kalimat ke sebuah nilai bilangan bulat dan mengeluarkan hasilnya.v__n_1 = atoi( v__k_1 ) ; printf( "\nUntaian karakter %s dikonversi menjadi bilangan bulat: %d\n" , v__k_1 , v__n_1 ) ; v__n_2 = atoi( v__k_2 ) ; printf( "Untaian karakter %s dikonversi menjadi bilangan bulat: %d\n" , v__k_2 , v__n_2 ) ; v__n_3 = atoi( v__k_3 ); printf( "Untaian karakter %s dikonversi menjadi bilangan bulat: %d\n\n" , v__k_3 , v__n_3 ) ;
-
Selanjutnya di dalam blok fungsi yang sama, lakukan konversi nilai variabel bilangan bulat pertama menjadi sebuah kalimat yang mengandung bilangan binernya yang ekuivalen menggunakan sebuah fungsi nirstandar dan mengeluarkan hasilnya.
itoa( v__n_1, v__k_1, 2 ); printf( "Desimal %d dalam bilangan biner: %s\n" , v__n_1, v__k_1 );
-
Kemudian lakukan konversi nilai variabel bilangan bulat pertama menjadi kalimat yang mengandung bilangan oktal dan heksadesimal yang ekuivalen menggunakan fungsi pustaka standar dan juga menyimpan banyak karakter mereka.
v__n_2 = sprintf( v__k_3, "%o", v__n_1 ) ; printf( "Desimal %d dalam bilangan oktal: %s, banyak karakter: %d\n" , v__n_1, v__k_3, v__n_2 ) ; v__n_3 = sprintf( v__k_3, "%x" , v__n_1 ) ; printf( "Desimal %d dalam bilangan heksadesimal: %s, banyak karakter: %d\n\n" , v__n_1, v__k_3, v__n_3 ) ;
-
Pada bagian akhir blok fungsi
main()
, berikan keluaran sebuah bilangan bulat nol seperti yang disyaratkan oleh deklarasi fungsi.return 0 ;
-
Simpanlah berkas program kemudian kompilasi dan jalankan untuk melihat hasil-hasil pengonversian.
Secara keseluruhan, Anda dapat melihat langkah-langkah tersebut dalam Video 8.6 (silahkan Anda pilih mode Full screen dan resolusi 720p untuk tampilan video yang lebih jelas):

8.7. Ringkasan
- Dalam pemrograman C, sebuah kalimat merupakan sebuah larik karakter yang memiliki karakter spesial
\0 null
pada anggota terakhirnya. - Setiap karakter juga memiliki sebuah nilai kode bilangan ASCII.
- Nama sebuah larik karakter berlaku seperti sebuah pointer bagi keseluruhan kalimat.
- Fungsi
scanf()
berhenti membaca masukan pada karakter spasi pertama yang dijumpainya, namun fungsigets()
menerima spasi-spasi dan secara otomatis menambahkan sebuah karakter akhir\0 null
. - Fungsi
puts()
mengeluarkan sebuah kalimat yang ditentukan pada argumennya dan secara otomatis menambahkan sebuah baris baru pada akhir kalimat. - Fungsi-fungsi khusus penangan kalimat tersedia dari berkas header pustaka C standar, seperti misalnya fungsi
strlen()
yang memberikan keluaran banyak karakter sebuah kalimat tertentu, atau fungsistrcpy()
danstrncpy()
yang bisa menyalin kalimat-kalimat. - Berkas header
string.h
juga menyediakan fungsistrcat()
danstrncat()
yang bisa digunakan untuk merangkai atau menyatukan kalimat-kalimat. - Sebagai tambahan,
string.h
menyediakan fungsistrstr()
yang mencari sebuah sub kalimat tertentu dalam sebuah kalimat dan juga fungsistrcmp()
yang membandingkan dua kalimat tertentu. - Ketika
strstr()
gagal menemukan sub kalimat yang dicarinya maka fungsi tersebut akan memberikan sebuah nilai keluaranNULL
. - Berkas header
ctype.h
pada pustaka standar bahasa C menyediakan fungsi-fungsi untuk menguji tipe-tipe karakter, seperti misalnyaisalpha()
,isdigit()
, danispunct()
. - Berkas header
ctype.h
juga menyediakan fungsiislower()
,isupper()
dantolower()
,toupper()
yang menguji dan mengatur jenis karakter kapital atau sebaliknya. - Berkas header pustaka standar
stdlib.h
menyediakan fungsiatoi()
yang bisa mengonversi sebuah kalimat menjadi sebuah bilangan bulat. - Berkas header pustaka standar
stdlib.h
juga menyediakan fungsisprintf()
yang bisa mengonversi sebuah bilangan bulat menjadi sebuah kalimat, seperti halnya fungsi nirstandar yang lebih hebatitoa()
.
Daftar Pustaka
- Kernighan, Brian W. & Ritchie, Dennis M. (1988). The C Programming Language. New Jersey: Prentice Hall.
- Griffiths, David & Griffiths, Dawn (2012). Head First C. California: O’Reilly.
- McGarth, Mike (2012). C Programming: Grasp the Nuts and Bolts of Programming. Warwickshire: In Easy Steps Ltd.
- Stevanovic, Milan (2014). Advanced C and C++ Compiling: An Engineering Guide to Compiling, Linking, and Libraries using C and C++. California: Apress.