7: String
Bab. 7
STR ING
7.1 Tujuan Instruksional Khusus
1.
2.
Mahasiswa mampu menggunakan fungsi puts(), gets(), cputs() dan cgets() khususnya
dalam input dan output data String.
3.
Mahasiswa mampu menggunakan fungsi atof() dan atai untuk mengkonversi string ke
integer maupun ke float.
7.2 Pendahuluan
String digunakan untuk menangani data yang bertipe teks, misalnya nama, alamat, dan lainlain. Di dalam Turbo C, string dianggap sebagai array dari karakter.
7.2.1
Cara meneklarasi string sama seperti mendeklarasikan array dengan tipe karakte r (char).
char nama_variabel [Indeks]
contoh: char nama [10] , artinya string nama akan mampu menampung karakter maksimum
sebanyak 19 buah. Mengapa hanya 19 bukan 20?, string ada lah suatu rangka ian karakter
yang diakhiri oleh karakter null. Dengan demikian karakter null secara otomatis akan
selalu ditambahkan ke dalam string tadi, oleh karena itu tempat yang dapat digunakan untuk
menampung karakter yang lain adalah panjang array dikurangi dengan 1. Jadi bila panjang
string pada variable nama diperkirakan maksimum terdiri dari 20 karakter, maka pada
deklarasi :
char nama [21]
Sebuah catatan singkat: meskipun karakter null (\0) memiliki nilai numeric sama denga n nol
(0), namun karakter ini bukan karakter nol (0), karena kedua karakter ini memilki nilai
ASCII yang berbeda. Karakter null (\0) memilki nilai ASII sama dengan 0 (dalam
heksadesimal atau desimal), sedangkan nol (0) memiliki nilai ASII sama dengan 30.
Deklarasi string dapa t dilakukan di da lam suatu fung si seba gai variable local, maupun di luar
fungsi sebagai variable global. String dapat pula dideklarasikan sebagai static array.
Hal.97
7.2.2
Inisialisasi String
Ada dua cara untuk menginisialisai suatu string. Pertama seperti cara menginisialisasi array,
misalnya :
char nama[7]={T,E,L,K,O,M,\0};
Karena setiap elemen array bertipe karakter, maka harus diletakkan di antara dua tanda kutip
tunggal (). Elemen terakhir array harus berupa karakter null (\0).
Cara yang kedua lebih sederhana dari cara yang pertama, yaitu string diletakkan di antara dua
tanda kutip () tanpa diakhiri oleh karakter null, dan tanpa menggunakan kurung kurawal:
char nama[7]=TELKOM;
kedua inisialisasi ini akan memberi hasil yang sama.
7.2.3
Mencetak String
Sama seperti data yang lain, string dapat juga dicetak dengan menggunakan printf. Sebagai
penentu tipe (type specifier) dari string digunakan %s, misalkan :
7.2.4
Menginputkan String
String dapat pula diinputkan dengan menggunakan scanf(), misalkan seperti contoh program
di bawah ini:
/* Menginputkan String */
main()
{
char nama[15];
clrscr();
printf("\nNama Anda : ");
scanf("%s",nama);
printf("\nHallo %s, senang berkenalan dengan Anda", nama);
getche();
}
Perhatikan penggunaan scanf() pada contoh di atas:
scanf(%s,nama)
disini digunakan nama buka n &nama, Karena pada array, nama variabel yang tidak diikuti
dengan indeks menunjukkan alamat dari elemen pertama array tadi, jadi:
nama saya artinya de ngan &nama[0]
Compile da n ke mud ian jalankan contoh tersebut dengan mengisikan nama Aditya.
Nama Anda : Polines
Outputnya akan menjadi :
Hallo Polines, senang be rkenalan denga n Anda
P
6
7
8
ARRAY
nama
9
10
11
12
13
14
Hal.99
Hal.100
7.2.5
Fungsi input/output yang khusus untuk string, yaitu puts(), gets(), cputs() dan cgets(). Fungsi
puts() sebenarnya mirip dengan printf(), yaitu digunakan untuk mencetak string di layar.
puts() berasal dari kata put string. Bentuk umum fungsi ini :
puts(string)
String di sini dapat berupa konstanta, seperti :
puts(Nama Saya Politek);
atau berbentuk variabel, seperti :
puts(nama)
dimana nama ada lah suatu variabel array untuk string.
Agak sedikit berbeda dengan printf(), string yang dicetak dengan puts() akan selalu diakhiri
oleh \n yang dibe rika n secara otomatis. Dengan de mikian string berikutnya aka n dicetak
pada baris di bawahnya. Misalnya :
puts(NAMA SAYA : );
puts(Politek);
Hal lain yang berbeda adalah puts() hanya dapat digunakan untuk mencetak sebuah string
saja, seperti:
puts(NAMA SAYA : Politek);
SATU STRING
Atau
puts(nama);
contoh-contoh berikut ini salah :
puts(NAMA SAYA : , Politek);
DUA STRING
puts(NAMA SAYA : %s,nama);
DUA STRING
Hal.101
puts() tidak mengenal penentu format (type specifier). Karena fungsi ini sudah dikhususkan
untuk string, maka penentu tipe tidak diperlukan lagi.
Berbeda dengan fungsi puts(), fungsi gets() digunakan untuk menginputkan data string.
Bentuk umum fungsi ini adalah :
gets(nama_variabel_array);
Contoh :
gets(nama);
Perbedaannya dengan scanf() adalah fungsi gets() ini dapat menerima data string yang
mengandung spasi ataupun tab dan masih dianggap sebagai satu kesatuan data. Contoh
berikut ini memperhatikan penggunaan fungsi gets() da n puts().
/* Penggunaan Fungsi gets () dan puts () */
main()
{
static char nama [20];
clrscr();
puts ("Nama Anda : ");
gets(nama);
puts("Senang berke nalan de ngan Anda : ");
puts("nama");
getche();
}
Dengan menginputkan Telkom, program ini akan memberikan output sebagai berikut:
Nama Anda ;
Telkom
Senang berkenalan denga n Anda,
Telkom
Perhatikan dalam program di atas, pada waktu penginputan data 'Telkom', ternyata data ini
di tuliskan di bawah 'Nama Anda : ', tampilan semacam ini mungkin kurang enak dilihat.
Untuk membuat agar data input tersebut dapat dituliskan langsung di samping 'Nama Anda :
', akan diperkenalkan sebuah fungsi input lainnya, yaitu cputs.
cputs() mirip sekali dengan puts(). hanya pada akhir string tidak diikuti oleh 'return',
sehingga string selanjutnya akan dicetak di samping string yang pertama. Contoh :
Hal.102
Contoh berikutnya :
cputs("Nama Anda : \n\r");
cputs("Telkom");
output yang akan diberikan :
Nama Anda :
Telkom
/* Penggunaan fungsi cputs() */
main()
{
static char nama[20];
clrscr();
cputs("Nama Anda : ");
gets(nama);
cputs("Senang berkenalan denngan Anda : ");
puts(nama);
}
Outputnya :
Nama Anda : Telkom
Senang berkenalan dengan Anda, Telkom
cgets() digunakan untuk mennginputkan data string tunggal. Secara umum sifat fungsi ini
sama dengan gets() hanya cara menyimpan elemenya berbeda. Bila gets() akan
Hal.103
menyimpan karakter mulai dari elemen yang pertama, sedangkan cgets() menyimpan
karakter mulai pada elemen yang ketiga, elemen yang kedua digunakan untuk menyimpan
jumlah karakter yang telah Anda inputkan pada variable tersebut.
'P'
'l'
'a'
'c'
'e'
'\o'
0
2
3
4
5
6
7
8
9
10
11
12
13
''
'P'
'l'
'a'
'c'
'e'
'\o'
12
gets()
1
2
3
4
5
6
7
8
9
10
11
13
cgets()
Adhiyoso
Andre Pareira
Gunawan
Perhatikan nilai karakter kedua, disana akan ditampilkan suatu nilai yang sama dengan
jumlah karakter yang Anda ketikkan, kemudian mulai dari karakter ketiga dan seterusnya,
Anda dapat melihat data yang Anda inputkan tadi.
Misalkan untuk data : Adhijoso
........
Karakter ke 2 :
Karakter ke 3 : A
Karakter ke 4 : d
Karakter ke 5 : h
Karakter ke 6 : i
Fungsi gets()
nilainya
nilainya
nilainya
nilainya
nilainya
8
65
100
104
105 dst..
memberikan hasil yang tidak sempurna, misalnya input data dengan gets() atau cgets()
kadang-kadang dilewati begitu saja, sehingga Anda tidak memiliki kesempatan untuk
menginputkan data tersebut. Ditinjau dari segi penggunaan memorinya, fungsi scanf()
membutuhkan memori lebih banyak daripada gets() dan cgets(), oleh karena itu
penggunaan kedua fungsi lebih disukai dibandingkan dengan scanf(). Yang menjadi
masalah disini adalah gets() dan cgets() hanya digunakan untuk menginputkan data
string.
7.2.6
Fungsi atoi() da n atof() sebenarnya merupakan fungsi konversi dari string menjadi numerik.
Fungsi ini seringka li digunakan terutama bila data numeric diinputkan dengan menggunakan
fungsi gets() atau cgets().
atoi()
Fungsi atoi() merupakan singkatan dari ASCII to Integer, jadi fungsi ini digunakan untuk
mengkonversikan string menjadi integer. Berikut ini diberikan sebuah contoh penggunaan
atoi().
/* Penggunaan Fungsi atoi() */
main()
{ int bil;
Hal.105
char x[10];
clrscr();
printf("Inputkan Sebuah Bilangan Bulat ; ");
gets(x);
/* konversi String ke Integer */
bil=atoi(x);
printf("\nBilanga n te rsebut : %d", bil);
printf("\nBilangan + 10
: %d", bil + 10);
getche();
}
Coba jalankan program ini, kemudian inputkan 2500. Pertama '2500' akan diterima sebagai
string oleh gets(), kemudian dikonversikan menjadi integer oleh atoi(). Output dari program
ini :
Bilangan tersebut : 2500
Bilangan + 10
: 2510
Dari hasil output kedua (Bilangan + 10), disini terlihat bahwa bil memang telah bertipe
numerik.
atof()
fungsi atof() digunakan untuk mengkonversikan data string menjadi float. atof() merupakan
singkatan dari ASCII to float. Contoh penggunaan atof() akan diberikan pada program di
bawah ini :
Hasilnya, meskipun ditulis dalam bentuk float, namun sebenarnya berupa integer. Agar
hasilnya benar, atof() harus dideklarasika n sebagai float :
float atof()
output program akan menjadi:
Bilangan tersebut : 20.300
Bilangan + 10
: 30.300
7.3 Peralatan
1.
1 set computer
2.
Software turbo C
Hal.107
3. Buatlah program seperti dibawah ini dan simpan dengan nama Con73, kemudian
lakukanlah compile dan run, dan catat hasilnya pada lembar kerja yang tersedia.
/* Penggunaan Fungsi gets () dan puts () */
main()
{
static char nama [20];
clrscr();
puts ("Nama Anda : ");
gets(nama);
puts("Senang berke nalan de ngan Anda : ");
puts("nama");
getche();
}
4. Buatlah program seperti dibawah ini dan simpan dengan nama Con74, kemudian
lakukanlah compile dan run, dan catat hasilnya pada lembar kerja yang tersedia.
/* Penggunaan cgets() */
main()
{
char nama[20];
int i;
clrscr();
printf("Nama Anda : ");
cgets(nama);
for (i=0; i<20; ++i)
{
printf("\nKarakter ke %d : %c nilainya %d",
Hal.108
i+I,nama[i],nama[i]);
}
printf("\nTekan sembarang tombol");
gets();
}
6. Buatlah program seperti dibawah ini dan simpan dengan nama Con76, kemudian
lakukanlah compile dan run, dan catat hasilnya pada lembar kerja yang tersedia.
/* Penggunaan Fungsi atoi() */
main()
{
int bil;
char x[10] ;
clrscr();
pr intf("Inputka n Sebuah Bilangan Bulat ; ");
gets(x);
/* konversi String ke Integer */
bil=atoi(x);
printf("\nBilangan tersebut : %d", bil);
printf("\nBilangan + 10
: %d", bil + 10);
getche();
}
7. Buatlah program seperti dibawah ini dan simpan dengan nama Con77, kemudian
lakukanlah compile dan run, dan catat hasilnya pada lembar kerja yang tersedia.
/* Penggunaan fungsi atof() */
main()
{
float bil;
char x[10];
clrscr();
printf("Inputkan sebuah bilangan : ");
gets(x);
/* Konversi String ke Float */
bil=atof(x);
printf("\nBilangan tersebut : %.3f", bil);
printf("\nBilangan + 10
: %.3f", bil + 10);
getche();
}
Nama File
Keluaran
Hal.109
2
3
4
5
6
7
Perbaikilah program berikut ini hingga benar, kesalahan dapat berupa penggunaan
perintah/fungsi yang salah, cara menuliskan pernyataan yang salah dan sebagainya:
/* Mengkoreksi program yang salah */
main()
{ char nama[20];
int usia;
printf("\n Inputkan nama anda: ");
gets(&nama);
printf("\n Inputkan usia anda: ");
scanf("%d",usia);
if (usia=25)
printf("\n Andalah karyawan yang dibutuhkan,%s",nama[20])
}
2.
Daftar Pustaka
++
Nugroho, Adi. Algoritma dan Struktur Dara Dengan C. Andi Offset, Jogyakarta, 2009.
Hal.111