BAB X String dan Manipulasinya

  DISU USUN OLEH H : ADAM MU UKHARIL BA ACHTIAR, S. .Kom.

  

DIK KTAT MATA A KULIAH P PEMROGRA AMAN I

  

k ara akt er null ( ‘\ 0’) . St rin ng sangat m em udahk kan t ugas pem rogram m . Dengan st ring,

pem m rogram d dapat m en nam pilkan pesan ke esalahan, m enam pilk kan prom p pt bagi

m as sukan dari keyboard at aupun m m em berik an n inform asi i pada laya ar dengan m udah.

Ben nt uk um um m dari pen ndeklarasia n dan inis sialisasi se ebuah st ing g adalah sebagai

beri ikut :

cha r v a r i ia be l_ st r in n g[ n + 1 ] = { ‘c1 ’,’c2 ’, ..,’cn ’,’\ 0 ’ ’} ;

  

Dala am pem rog gram an C/ C+ + , k ara kt er null d dapat digun nakan unt u uk m enanda ai akhir

seb uah st ring. . Karena da alam pende eklarasiann nya st ring m m enggunak k an t ipe da at a char

m ak ka set iap ka arakt er aka an m em but t uhkan sat u u byt e dalm m m em ori.

  C Cat at an Karakt er r null m eru pakan ciri k k has penga akhir st ring pada C da an C+ + .

  Suat u st t ring dapat t dikat akan n sebagai st r in g k os son g kalau u st ring t idak ber risi sesuat u u apapun ( “ “ ” ) .

Me endek klarasi kan St tring

  Suat u s st ring dapa at dideklara asikan deng gan dua car ra, yait u m enggunaka an array

dan n m engguna akan point e er. Adapun dua bent u uk pendek la arasian st r i ng adalah sebagai beri ikut :

cha r n a a m a _ va r ia a be l[ n + 1 ] ;

a t a u

cha r r * n a m a _ v va r ia be l; DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

  Cara yang pert am a adalah dengan m em buat sebuah array bert ipe char

sebanyak n+ 1 karakt er. Apabila m enggunakan cara pendeklarasian yang pert am a

ini, variabel st ring hanya dapat diisi sebanyak n k arakt er karena byt e t erakhir akan

dit em pat i karak t er null unt uk m engakhiri st ringnya. Sedangkan unt uk cara kedua

adalah dengan m em buat suat u variabel point er bert ipe char yang akan m enunj uk ke

alam at t em pat m enyim pan st ringnya.

  12

  5

  4

  3

  2

  1

  19 /* Program 10.1 Nama File : Lat-10.1.c Programmer : Adam Mukharil Bachtiar, S.Kom. */ #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { char nama1[31]; char *nama2="Adam MB"; printf("Masukkan nama pertama: ");fflush(stdin); gets(nama1); printf("Nama pertama = %s\n",nama1); printf("Nama kedua = %s\n\n",nama2); system("PAUSE"); return 0; }

  18

  17

  16

  15

  14

  13

  11

  Cara pert am a lebih baik dibandingk an dengan cara yang kedua. Cara pendeklarasian yang kedua m em iliki kelem ahan yait u:

  10

  9

  8

  7

  6

  5

  4

  3

  2

  1

  2. Apabila ingin m engisi secara langsung variabelnya t anpa harus diinisialisasi t erlebih dahulu m aka harus m em int a t em pat t erlebih dahulu ke m em ori unt uk m enam pung dat a st ringnya ( cont ohnya dengan perint ah m alloc) . Unt uk lebih j elasny a buat lah program berik ut ini:

  1. Variabel point er st ringnya harus langsung diinisialisasi pada saat pendek larasian. Variabel t ersebut t idak bisa langsung diisi m elalui perint ah input t anpa diinisialisasi t erlebih dahulu.

  6 /* Program 10.1 Nama File : Lat-10.1.cpp Programmer : Adam Mukharil Bachtiar, S.Kom. */

  DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

  7 #include <cstdlib> 8 #include <iostream>

  9 10 using namespace std;

  11 12 int main(int argc, char *argv[]) 13 { 14 char nama1[31]; 15 char *nama2="Adam MB"; 16 cout<<"Masukkan nama pertama: ";fflush(stdin); cin.get(nama1,30); 17 cout<<"Nama pertama = "<<nama1<<endl; 18 cout<<"Nama kedua = "<<nama2<<endl<<endl; 19 system("PAUSE"); 20 return EXIT_SUCCESS; 21 }

  Hasil eksekusi:

Gam bar 10.1 Hasil eksekusi program Lat 10.1

Fungsi String

  Di dalam pem rogram an C/ C+ + disediakan beberapa buah fungsi unt uk

m engolah dat a st ring. Fungsi- fungsi yang disediakan unt uk m engolah dat a st ring adalah sebagai berikut : 1. Menghit ung panj ang karak t er st ring. DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

  3. Menggabungkan st ring.

  4. Mem bandingkan dua buah st ring.

  5. Mengkonversi isi st ring ke huruf kecil.

  6. Mengkonversi isi st ring ke huruf besar.

  7. Mencari subst ring.

  8. Mem balik isi st r ing.

  9. Menggant i isi st ring dengan suat u karakt er.

Unt uk bisa m enggunakan fungsi- fungsi yang t elah disebut kan di at as, di dalam

program C/ C+ + perlu diser t akan file st ring.h ( # include < st ring.h> ) .

Menghitung Panjang Suatu String

  Bent uk um um fungsi unt uk m enghit ung panj ang suat u st ring adalah sebagai berikut :

st r le n( st r in g) ;

  

Fungsi ini akan m enghasilkan sebuah angka int eger yang m erupakan panj ang dari

st ring di dalam param et er fungsiny a ( t e r m a suk spa si) . Unt uk lebih j elasnya

buat lah program di baw ah ini:

  1 /*

  2 Program 10.2

  3 Nama File : Lat-10.2.c 4 Programmer : Adam Mukharil Bachtiar, S.Kom. 5 */

  6 7 #include <stdio.h> 8 #include <stdlib.h> 9 #include <string.h>

  10 11 int main(int argc, char *argv[]) 12 { 13 char string[31]; 14 int panjang; 15 printf("Masukkan suatu string : ");fflush(stdin); gets(string); 16 panjang=strlen(string); 17 printf("String yang dimasukkan = %s\n",string); 18 printf("Panjang string = %i\n\n",panjang); 19 system("PAUSE");

  DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

  12

  23 /* Program 10.2 Nama File : Lat-10.2.cpp Programmer : Adam Mukharil Bachtiar, S.Kom. */ #include <cstdlib> #include <iostream> #include <string.h> using namespace std; int main(int argc, char *argv[]) { char string[31]; int panjang; cout<<"Masukkan suatu string : ";fflush(stdin); cin.get(string,30); panjang=strlen(string); cout<<"String yang dimasukkan = "<<string<<endl; cout<<"Panjang string = "<<panjang <<endl<<endl; system("PAUSE"); return EXIT_SUCCESS; }

  22

  21

  20

  19

  18

  17

  16

  15

  14

  13

  11

  20

  10

  9

  8

  7

  6

  5

  4

  3

  2

  1

  21 return 0; }

  Hasil eksekusi:

Gam bar 10.2 Hasil eksekusi program Lat 10.2

  DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

Menyalin Isi String

  

Fungsi st r cpy akan m enyalin seluruh isi st ring1 ke st ring2 sedangkan st rncpy akan

m enyalin isi st ring1 ke st ring2 sebanyak j um lah karakt er yang diberikan di

param et er fungsiny a. Unt uk lebih j elasnya buat lah program berik ut ini:

  14

  25 /* Program 10.3 Nama File : Lat-10.3.c Programmer : Adam Mukharil Bachtiar, S.Kom. */ #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char *argv[]) { char string1[31]; char string2[31]; int k; printf("Masukkan string: ");fflush(stdin); gets(string1); printf("Masukkan jumlah karakter salin: "); scanf("%i",&k); strcpy(string2,string1); printf("Hasil penyalinan strcpy = %s\n",string2); strncpy(string2,string1,k); string2[k]='\0';//menutup string printf("Hasil penyalinan strncpy = %s\n\n",string2); system("PAUSE"); return 0; }

  24

  23

  22

  21

  20

  19

  18

  17

  16

  15

  13

  1

  Sebuah v ariabel st ring t idak dapat kit a isi m enggunakan isi variabel st ring

lainnya secara langsung ( variabel2= variabel1) . Unt uk dapat m engisinya diperlukan

suat u fungsi st ring. Bent uk um um dari fungsi unt uk m enyalin isi st ring adalah

sebagai berikut :

st r cpy( st r in g2 ,st r in g1 ) ;

a t a u

st r n cpy ( st r in g2 ,st r in g1 ,j um la h _ k a r a k t e r ) ;

  11

  10

  9

  8

  7

  6

  5

  4

  3

  2

  12

  DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

  15

  27 /* Program 10.3 Nama File : Lat-10.3.cpp Programmer : Adam Mukharil Bachtiar, S.Kom. */ #include <cstdlib> #include <iostream> #include <string.h> using namespace std; int main(int argc, char *argv[]) { char string1[31]; char string2[31]; int k; cout<<"Masukkan string: ";fflush(stdin); cin.get(string1,30); cout<<"Masukkan jumlah karakter salin: ";cin>>k; strcpy(string2,string1); cout<<"Hasil penyalinan strcpy = "<<string2<<endl; strncpy(string2,string1,k); string2[k]='\0';//menutup string cout<<"Hasil penyalinan strncpy = "<<string2 <<endl<<endl; system("PAUSE"); return EXIT_SUCCESS; }

  26

  25

  24

  23

  22

  21

  20

  19

  18

  17

  16

  14

  1

  13

  12

  11

  10

  9

  8

  7

  6

  5

  4

  3

  2

  Hasil eksekusi:

Gam bar 10.3 Hasil eksekusi program Lat 10.3

  DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

Menggabungkan String

  

St rcat akan m enggabungkan isi st ring1 dengan isi st ring2 secara keseluruhan

sedangkan st rncat akan m enggabungkan isi st ring1 dengan isi st ring2 sej um lah

karakt er yang diisikan di dalam param et er fungsinya. Unt uk lebih j elasnya buat lah

program berikut ini:

  16

  7 /* Program 10.4 Nama File : Lat-10.4.cpp Programmer : Adam Mukharil Bachtiar, S.Kom. */ #include <cstdlib>

  6

  5

  4

  3

  2

  1

  21 /* Program 10.4 Nama File : Lat-10.4.c Programmer : Adam Mukharil Bachtiar, S.Kom. */ #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char *argv[]) { char string1[]="Kita sedang belajar"; char string2[]=" fungsi string bersama!"; char string3[50]; strcpy(string3,string1); printf("Hasil penggabungan strcat = %s\n" ,strcat(string3,string2)); printf("Hasil penggabungan strncat = %s\n\n" ,strncat(string1,string2,14)); system("PAUSE"); return 0; }

  20

  19

  18

  17

  15

  1

  Bent uk um um fungsi unt uk m enggabungkan st ring adalah sebagai berikut :

st r ca t ( st r in g1 ,st r in g2 ) ;

a t a u

st r n ca t ( st r ing1 ,st r in g2 ,j u m la h _ k a r a k t e r ) ;

  13

  12

  11

  10

  9

  8

  7

  6

  5

  4

  3

  2

  14

  DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

  17

  23 #include <iostream> #include <string.h> using namespace std; int main(int argc, char *argv[]) { char string1[]="Kita sedang belajar"; char string2[]=" fungsi string bersama!"; char string3[50]; strcpy(string3,string1); cout<<"Hasil penggabungan strcat = " <<strcat(string3,string2)<<endl; cout<<"Hasil penggabungan strncat = " <<strncat(string1,string2,14)<<endl<<endl; system("PAUSE"); return EXIT_SUCCESS; }

  22

  21

  20

  19

  18

  16

  8

  15

  14

  13

  12

  11

  10

  9

  Hasil eksekusi:

Gam bar 10.4 Hasil eksekusi program Lat 10.4

  DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

Membandingkan Dua Buah String

  Ada em pat buah bent uk fungsi unt uk m em bandingkan isi dua buah st ring yait u:

st r cm p( st r in g1 ,st r in g2 ) ;

da n

st r n cm p( st r in g1 ,st r in g2 ,j u m la h _ k a r a k t e r ) ;

a t a u

st r cm pi( st r ing1 ,st r in g2 ) ;

da n

st r n icm p( st r in g1 ,st r in g2 ,j u m la h _ k a r a k t e r ) ;

  Fungsi st rcm p digunakan unt uk m em bandingkan dua buah st ring secara case

sensit ive ( m em bedakan huruf besar dan huruf kecil) sedangkan st rncm p akan

m em bandingkan dua buah st ring secara case sensit ive sebany ak j um lah karakt er

pada param et er. Fungsi st rncm pi akan m em bandingkan dua buah st ring secara case

insensit ive ( t idak m em bedak an huruf besar dan huruf kecil) sedangkan st rncm pi

akan m em bandingkan dua buah st ring secara case insensit ive sebanyak j um lah

karakt er pada param et er.

  Sem ua fungsi di at as akan m enghasilkan sebuah nilai int eger sebagai berikut :

  1. Nilai ret urn lebih dari nol ( > 0 Æ nilai posit if) apabila st ring1 lebih besar dari st ring2.

  

2. Nilai ret urn sam a dengan nol ( = = 0) apabila st ring1 sam a dengan st ring2.

  3. Nilai ret urn kurang dari nol ( < 0 Æ nilai negat if) apabila st ring1 lebih kecil dari st ring2. Unt uk lebih j elasny a buat lah program berik ut ini:

  1 /*

  2 Program 10.5

  3 Nama File : Lat-10.5.c 4 Programmer : Adam Mukharil Bachtiar, S.Kom. 5 */

  6 7 #include <stdio.h> 8 #include <stdlib.h> 9 #include <string.h>

  10 11 int main(int argc, char *argv[]) 12 {

  DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

  43

  36

  37

  38

  39

  40

  41

  42

  44

  34

  45

  46

  47

  48

  49

  50

  51

  52

  35

  33

  13

  22

  14

  15

  16

  17

  18

  19

  20

  21

  23

  32

  24

  25

  26

  27

  28

  29

  30

  31

  53 char string1[]="ABCD"; char string2[]="ABCD"; char string3[]="abcd"; int banding; banding=strcmp(string1,string2); printf("Hasil strcmp : \n"); if(banding==0) printf("%s sama dengan %s\n",string1,string2); else if(banding>0) printf("%s lebih besar dibanding %s\n" ,string1,string2); else printf("%s lebih kecil dibanding %s\n" ,string1,string2); printf("\n"); banding=strncmp(string1,string3,2); printf("Hasil strncmp dua karakter: \n"); if(banding==0) printf("%s sama dengan %s\n",string1,string3); else if(banding>0) printf("%s lebih besar dibanding %s\n" ,string1,string3); else printf("%s lebih kecil dibanding %s\n" ,string1,string3); printf("\n"); banding=strcmpi(string1,string3); printf("Hasil strcmpi : \n"); if(banding==0) printf("%s sama dengan %s\n",string1,string3); else if(banding>0) printf("%s lebih besar dibanding %s\n" ,string1,string3); else printf("%s lebih kecil dibanding %s\n" ,string1,string3); printf("\n"); banding=strnicmp(string1,string3,2); printf("Hasil strnicmp dua karakter: \n"); if(banding==0) printf("%s sama dengan %s\n",string1,string3); else if(banding>0) printf("%s lebih besar dibanding %s\n"

  DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

  24

  17

  18

  19

  20

  21

  22

  23

  25

  15

  26

  27

  28

  29

  30

  31

  32

  33

  16

  14

  54

  3

  55

  56

  57

  58

  59 ,string1,string3); else printf("%s lebih kecil dibanding %s\n" ,string1,string3); printf("\n"); system("PAUSE"); return 0; }

  1

  2

  4

  13

  5

  6

  7

  8

  9

  10

  11

  12

  34 /* Program 10.5 Nama File : Lat-10.5.cpp Programmer : Adam Mukharil Bachtiar, S.Kom. */ #include <cstdlib> #include <iostream> #include <string.h> using namespace std; int main(int argc, char *argv[]) { char string1[]="ABCD"; char string2[]="ABCD"; char string3[]="abcd"; int banding; banding=strcmp(string1,string2); cout<<"Hasil strcmp : "<<endl; if(banding==0) cout<<string1<<" sama dengan "<<string2<<endl; else if(banding>0) cout<<string1<<" lebih besar dibanding " <<string2<<endl; else cout<<string1<<" lebih kecil dibanding " <<string2<<endl; cout<<endl; banding=strncmp(string1,string3,2); cout<<"Hasil strncmp dua karakter: "<<endl; if(banding==0) cout<<string1<<" sama dengan "<<string3<<endl; else if(banding>0)

  DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

  49

  60

  59

  58

  57

  56

  55

  54

  53

  52

  51

  50

  48

  35

  47

  46

  45

  44

  43

  42

  41

  40

  39

  38

  37

  36

  61 cout<<string1<<" lebih besar dibanding " <<string3<<endl; else cout<<string1<<" lebih kecil dibanding " <<string3<<endl; cout<<endl; banding=strcmpi(string1,string3); cout<<"Hasil strcmpi : "<<endl; if(banding==0) cout<<string1<<" sama dengan "<<string3<<endl; else if(banding>0) cout<<string1<<" lebih besar dibanding " <<string3<<endl; else cout<<string1<<" lebih kecil dibanding " <<string3<<endl; cout<<endl; banding=strnicmp(string1,string3,2); cout<<"Hasil strnicmp dua karakter: "<<endl; if(banding==0) cout<<string1<<" sama dengan "<<string3<<endl; else if(banding>0) cout<<string1<<" lebih besar dibanding " <<string3<<endl; else cout<<string1<<" lebih kecil dibanding " <<string3<<endl; cout<<endl; system("PAUSE"); return EXIT_SUCCESS; }

  DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom. Hasil eksekusi:

  

Gam bar 10.5 Hasil eksekusi program Lat 10.5

Mengkonversi Isi String Ke Huruf Kecil

  Bent uk um um fungsi unt uk m engkonversi isi st ring ke huruf kecil adalah sebagai berikut :

st r lw r ( st r in g) ;

  Unt uk lebih j elasny a buat lah program berik ut ini:

  1 /*

  2 Program 10.6

  3 Nama File : Lat-10.6.c 4 Programmer : Adam Mukharil Bachtiar, S.Kom. 5 */

  6 7 #include <stdio.h> 8 #include <stdlib.h> 9 #include <string.h>

  10 11 int main(int argc, char *argv[]) 12 { 13 char string[31]; 14 printf("Masukkan string: ");fflush(stdin); gets(string); 15 strlwr(string); 16 printf("String setelah strlwr= %s\n\n",string);

  DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

  11

  21 /* Program 10.6 Nama File : Lat-10.6.cpp Programmer : Adam Mukharil Bachtiar, S.Kom. */ #include <cstdlib> #include <iostream> #include <string.h> using namespace std; int main(int argc, char *argv[]) { char string[31]; cout<<"Masukkan string: ";fflush(stdin); cin.get(string,30); strlwr(string); cout<<"String setelah strlwr= "<<string<<endl<<endl; system("PAUSE"); return EXIT_SUCCESS; }

  20

  19

  18

  17

  16

  15

  14

  13

  12

  10

  17

  9

  8

  7

  6

  5

  4

  3

  2

  1

  19 system("PAUSE"); return 0; }

  18

  Hasil eksekusi:

Gam bar 10.6 Hasil eksekusi program Lat 10.6

  DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

Mengkonversi Isi String Ke Huruf Besar

  Unt uk lebih j elasny a buat lah program sebagai berikut :

  8

  2

  3

  4

  5

  6

  7

  9

  19 /* Program 10.7 Nama File : Lat-10.7.c Programmer : Adam Mukharil Bachtiar, S.Kom. */ #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char *argv[]) { char string[31]; printf("Masukkan string: ");fflush(stdin); gets(string); strupr(string); printf("String setelah strupr= %s\n\n",string); system("PAUSE"); return 0; }

  10

  11

  12

  13

  14

  15

  16 /* Program 10.7 Nama File : Lat-10.7.cpp Programmer : Adam Mukharil Bachtiar, S.Kom. */ #include <cstdlib> #include <iostream> #include <string.h> using namespace std; int main(int argc, char *argv[]) { char string[31]; cout<<"Masukkan string: ";fflush(stdin);

  1

  18

  1

  8

  2

  3

  4

  5

  6

  7

  9

  Bent uk um um fungsi m engkonversi isi st ring ke huruf besar adalah sebagai berikut :

st r upr ( st r ing) ;

  10

  11

  12

  13

  14

  15

  16

  17

  DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

   cin.get(string,30); 17 strupr(string); 18 cout<<"String setelah strupr= "<<string<<endl<<endl; 19 system("PAUSE"); 20 return EXIT_SUCCESS; 21 }

  Hasil eksekusi:

Gam bar 10.7 Hasil eksekusi program Lat 10.7

Mencari Substring

  Terkadang seorang program m er m em but uhkan fungsi unt uk m encari

subst ring ( bagian dar i st ring) . Bent uk um um dari fungsi m encari subst ring adalah

sebagai berikut :

st r st r ( st r in g,su bst r ing) ;

  

Fungsi st rst r akan m enghasilkan point er yang m enunj uk ke subst ring apabila

subst ring t ersebut ada di dalam st ringnya. Unt uk lebih j elasny a buat lah pr ogram

berikut ini:

  1 /*

  2 Program 10.8

  3 Nama File : Lat-10.8.c 4 Programmer : Adam Mukharil Bachtiar, S.Kom. 5 */

  DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

  12

  5

  6

  7

  8

  9

  10

  11

  13

  3

  14

  15

  16

  17

  18

  19

  20

  21

  4

  2

  6

  14

  7

  8

  9

  10

  11

  12

  13

  15

  1

  16

  17

  18

  19

  20

  21

  22

  23 #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char *argv[]) { char string[31]; char substring[15]; char *pstring; printf("Masukkan string : ");fflush(stdin); gets(string); printf("Masukkan substring : ");fflush(stdin); gets(substring); pstring=strstr(string,substring); printf("Sub string = %s\n",pstring); printf("Posisi sub string = %i\n\n", (pstring-string)+1); system("PAUSE"); return 0; }

  22 /* Program 10.8 Nama File : Lat-10.8.cpp Programmer : Adam Mukharil Bachtiar, S.Kom. */ #include <cstdlib> #include <iostream> #include <string.h> using namespace std; int main(int argc, char *argv[]) { char string[31]; char substring[15]; char *pstring; cout<<"Masukkan string : ";fflush(stdin); cin.get(string,30); cout<<"Masukkan substring : ";fflush(stdin); cin.get(substring,14); pstring=strstr(string,substring); cout<<"Sub string = "<<pstring<<endl; cout<<"Posisi sub string = "<<(pstring-string)+1 <<endl<<endl;

  DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

  23 system("PAUSE"); 24 return EXIT_SUCCESS; 25 }

  Hasil eksekusi:

Gam bar 10.8 Hasil eksekusi program Lat 10.8

Cat at an Fungsi st rst r hanya dapat m encari secara case sensit ive dan unt uk m endapat kan posisi secara benar m aka di dalam program nya point er hasil st rst r harus dit am bahkan dengan sat u karena indeks st ring dim ulai dari nol.

Membalik Isi String

  

Bent uk um um fungsi unt uk m em balik isi st ring adalah sebagai berikut :

st r r e v( st r in g) ;

  Unt uk lebih j elasny a buat lah program berik ut ini:

  1 /*

  2 Program 10.9

  3 Nama File : Lat-10.9.c 4 Programmer : Adam Mukharil Bachtiar, S.Kom. 5 */

  DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

  13

  7

  8

  9

  10

  11

  12

  14

  5

  15

  16

  17

  18

  19

  20

  6

  4

  6

  13

  7

  8

  9

  10

  11

  12

  14

  3

  15

  16

  17

  18

  19 #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char *argv[]) { char string[31]; printf("Masukkan string: ");fflush(stdin); gets(string); strrev(string); printf("String setelah strrev= %s\n\n",string); system("PAUSE"); return 0; }

  1

  2

  21 /* Program 10.9 Nama File : Lat-10.9.cpp Programmer : Adam Mukharil Bachtiar, S.Kom. */ #include <cstdlib> #include <iostream> #include <string.h> using namespace std; int main(int argc, char *argv[]) { char string[31]; cout<<"Masukkan string: ";fflush(stdin); cin.get(string,30); strrev(string); cout<<"String setelah strrev= "<<string<<endl<<endl; system("PAUSE"); return EXIT_SUCCESS; }

  DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom. Hasil eksekusi:

  

Gam bar 10.9 Hasil eksekusi program Lat 10.9

Mengganti Isi String Dengan Suatu Karakter

  Bent uk um um fungsi unt uk m enggant i isi st ring dengan suat u karakt er adalah sebagai berikut :

st r se t ( st r in g,k a r a k t e r ) ;

a t a u

st r n se t ( st r ing,k a r a k t e r ,j u m la h _ k a r a k t e r ) ;

  

Fungsi st rset akan m enggant i isi st ring dengan karak t er yang ada di param et er

secara keseluruhan sedangkan st rnset ak an m enggant i isi st ring dengan karakt er

yang ada di param et er sej um lah karakt er yang ada di param et er. Unt uk lebih

j elasny a buat lah pr ogram ber ik ut ini:

  1 /*

  2 Program 10.10

  3 Nama File : Lat-10.10.c 4 Programmer : Adam Mukharil Bachtiar, S.Kom. 5 */

  6 7 #include <stdio.h> 8 #include <stdlib.h> 9 #include <string.h>

  10

  DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

  15

  9

  10

  11

  12

  13

  14

  16

  7

  17

  18

  19

  20

  21

  22

  8

  6

  11

  18

  12

  13

  14

  15

  16

  17

  19

  5

  20

  21 int main(int argc, char *argv[]) { char string[]="Saya sedang belajar fungsi string"; char karakter='A'; strnset(string,karakter,11); printf("String setelah strnset = %s\n",string); strset(string,karakter); printf("String setelah strset = %s\n\n",string); system("PAUSE"); return 0; }

  1

  2

  3

  4

  23 /* Program 10.10 Nama File : Lat-10.10.c Programmer : Adam Mukharil Bachtiar, S.Kom. */ #include <cstdlib> #include <iostream> #include <string.h> using namespace std; int main(int argc, char *argv[]) { char string[]="Saya sedang belajar fungsi string"; char karakter='A'; strnset(string,karakter,11); cout<<"String setelah strnset = "<<string<<endl; strset(string,karakter); cout<<"String setelah strset = "<<string <<endl<<endl; system("PAUSE"); return EXIT_SUCCESS; }

  DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom. Hasil eksekusi:

  

Gam bar 10.10 Hasil eksekusi program Lat 10.10

String Sebagai Parameter Fungsi

  Sepert i t ipe dat a lainnya, st ring j uga bisa digunak an sebagai param et er

fungsi. Tidak hanya sebagai param et er fungsi t et api j uga bisa digunak an sebagai

nilai balik suat u fungsi. Sebagai cont oh adalah kasus t ent ang k ode barang dan nam a

barang sebagai berikut :

  1. Jika kode barang = B001 m ak a nam a barang = Kem ej a.

  2. Jika kode barang = B002 m ak a nam a barang = Kaos.

  3. Jika kode barang = B003 m ak a nam a barang = Jas. Kasus ini dapat diselesaik an dengan dua car a yait u: 1. Menggunakan st ring sebagai nilai balik fungsi.

  2. Menggunakan st ring sebagai param et er fungsi.

Menggunakan cara yang pert am a m aka st ring akan dij adikan sebagai t ipe dat a suat u

fungsi. Unt uk lebih j elasnya buat lah program berikut ini:

  1 /*

  2 Program 10.11

  3 Nama File : Lat-10.11.c 4 Programmer : Adam Mukharil Bachtiar, S.Kom. 5 */

  6 7 #include <stdio.h>

  DISUSUN OLEH : ADAM MUKHARIL BACHTIAR, S.Kom.

  9

  1

  2

  3

  4

  5

  6

  7

  8

  10

  31

  11

  12

  13

  14

  15

  16

  17

  18

  19

  32 #include <stdlib.h> #include <string.h> char *nama_barang(char kode_barang[]) { if(strcmp(kode_barang,"B001")==0) return "Kemeja"; else if(strcmp(kode_barang,"B002")==0) return "Kaos"; else return "Jas"; } int main(int argc, char *argv[]) { char kode_barang[6]; char *nama_brg; printf("Masukkan kode barang : ");fflush(stdin); gets(kode_barang); strupr(kode_barang);//mencegah error huruf kecil nama_brg=nama_barang(kode_barang); printf("Nama barang = %s\n\n",nama_brg); system("PAUSE"); return 0; }

  30

  8

  18

  9

  10

  11

  12

  13

  14

  15

  16

  17

  19

  29

  20