340 likes | 627 Vues
STRING. SASARAN. Menjelaskan tentang konsep string Menjelaskan operasi I/O pada string. Menjelaskan cara mengakses elemen string Menjelaskan berbagai fungsi mengenai string. KONSEP STRING. String dipakai untuk memanipulasi data teks .
E N D
SASARAN • Menjelaskantentangkonsep string • Menjelaskan operasi I/O pada string. • Menjelaskancaramengakseselemen string • Menjelaskanberbagaifungsimengenaistring
KONSEP STRING • String dipakaiuntukmemanipulasi data teks. • Konstanta string ditulis dengan diawali dan diakhiri tanda petik ganda. Contoh: “Pemrograman C” memori rendah memori tingi Komposisi penyimpanan string dalam memori • Nilai string “selalu” diakhiridenganNULL (\0)
KONSEP STRING • Deklarasi Variabel string char nama_var[n]; Variabel string dengan panjang maksimal n karakter (termasuk karakter NULL)bernamanama_var. • Inisialisasi String Contoh: char name[] = {'R','I','N','I',’\0’}; char name[] = “RINI”; Char name[10] = ”String”; Catatan:karakterakhir NULL wajibadadiakhir string. Bilamemakaipembatasanelemen array padainisialisasi, makajumlahkarakterharustidakmelebihielemen array.
INPUT DATA STRING • Dengan fungsi gets() atau scanf() gets(nama_array); scanf(“%s”, nama_array); fgets(nama_array, sizeofnama_array, stdin); Keterangan : • nama_arrayadalahvariabelbertipearray of char • Kalau memakai scanf() dg format %stidakmembacawhite-space;untukmenggantikandptdipakai format %[^\n]. • Untukscanf(), didepannama_arraybolehdiberi & bolehtidak
OUTPUT DATA STRING • Fungsi yang dapat digunakan adalah puts() atau printf(). puts(var_string); printf("%s",var_string); Keterangan: • var_stringadalah berupa array of char • puts() secara otomatis menambahkan karakter '\n' di akhir string
CONTOH STRING #include <stdio.h> #include <conio.h> #define MAKS 256 int main() {int i, jumkar = 0; char teks[MAKS]; puts("Masukkan suatu kalimat (maks 255 karakter)."); //memasukkandr keyboard gets(teks); for(i=0; teks[i]; i++) jumkar++; printf("\nJumlah karakter = %d\n", jumkar); getch(); return(0); }
PENGECEKKAN AKHIR STRING • Pemeriksaan terhadap teks[i] selama tidak berupa karakter NULL (dimulai dari indeks ke-0) dilakukan dengan instruksi: for(i=0; teks[i]; i++)jumkar++; Kondisi teks[i] pada for mempunyai makna secara implisit adalah: teks[i] != ‘\0’;
CONTOH STRING #include <stdio.h> #define MAKS 30 int main() { int i; char keterangan[]= “Saya menyukai bahasa C”; char kalimat[MAKS]; i=0; while (keterangan[i] != ‘\0’) { kalimat[i] = keterangan[i]; i++; } kalimat[i] = ‘\0’; /* beri karakter NULL */ printf(“Isi kalimat : %s\n”, kalimat); return(0); } Penyederhanaan: i=0; while (kalimat[i] = keterangan[i]) i++;
FUNGSI PUSTAKA STRING Fungsi pustaka untuk operasi string, prototypenya berada di file headerstring.h, diantaranya:
FUNGSI PUSTAKA STRING • Fungsi memchr() Deklarasi: void *memchr(const void *str, int c, size_t n); Untukmencarikarakterpertamac (sebuahunsigned char) didalamnpertamadaristring yang ditunjukoleh parameter str. Mengembalikan pointer yang menunjukkekarakterpertama yang sesuai, atau NULL jikatidakditemukan. Contoh: char nama[] = “Maria Magdalena Tiahahu"; if( memchr(nama,‘T',strlen(nama)) == NULL ) printf( “Tidakditemukankarakter T\n" ); else printf( “Ditemukankarakter T\n" );
FUNGSI PUSTAKA STRING • Fungsi memcmp(); Deklarasi: int memcmp(const void *str1, const void *str2, size_t n); Untuk membandingkan n byte pertama dari str1 dan str2. Tidak berhenti membandingkan walaupunsetelah karakter null.Mengembalikan nol jika n byte pertama str1 dan str2 sama. Mengembalikan negatif (<0)jika str1<str2 atau positip (>0) jika str1 >str2 pada n byte pertama. Contoh: int mc; char *str1="asdf"; char *str2="asdfasdf"; mc=memcmp(str1,str2,strlen(str1)<strlen(str2)?strlen(str1):strlen(str2)); if(!mc) printf("str1 sama-dengan str2"); else if(mc<0) printf("str1 lebihkecil str2"); else printf(" str1 lebihbesar str2");
FUNGSI PUSTAKA STRING • Fungsi memcpy(); Deklarasi: void *memcpy(void *str1, const void *str2, size_t n); Untukmenyalin n karakterdari str2 ke str1. Jika str1 dan str2 tumpangtindihmakahasilnyamenjaditidakterdefinisikan. Contoh: char string2[]="test string"; char string1[80];memcpy (string1,string2,strlen(string2)+1);
FUNGSI PUSTAKA STRING • Fungsi memmove(); Deklarasi: void *memmove(void *str1, const void *str2, size_t n); Untukmenyalin n karakter dari str2 ke str1. Jika str1 dan str2 tumpang tindih, pertama membaca str1secaralengkapdan kemudian ditulis kestr2 sehingga dapat disalin dengan benar. Contoh: char str[80]=“Test string";memmove (str+5,str,strlen(str)+1); printf("str: %s",str); Hasilnya: str: Test Test string
FUNGSI PUSTAKA STRING • Fungsi memset(); Deklarasi: void *memset(void *str, int c, size_t n); Untukmenyalin karakter c (sebuah unsigned char) padan karakter pertama dari string yang ditunjuk oleh parameter str. Contoh: char str[80]="Test string"; memset (str,'A',5); printf("str: %s",str); Hasilnya: str: AAAAAstring
FUNGSI PUSTAKA STRING • Fungsi strcat(); Deklarasi: char *strcat(char *str1, const char *str2); Untukmenambahkan string yang ditunjukolehstr2keakhirdari string yang ditunjukolehstr1. Karakter null daristr1akanditumpuki. Penyalinanberakhirsetelahkarakter null daristr2disalin. Jikaterjaditumpang-tindihmakahasilnyatidakterdefinisikan. Contoh: char str2[]="Test string"; char str1[80]="Contoh ", *pstr; pstr=strcat (str1,str2); printf("pstr: %s\nstr1: %s\n",pstr,str1);; Hasilnya: pstr: Contoh Test string str1: Contoh Test string
FUNGSI PUSTAKA STRING • Fungsi strcat(); Deklarasi: char *strncat(char *str1, const char *str2, size_t n); Untukmenambahkan n karakterdari string yang ditunjukolehstr2keakhirdari string yang ditunjukolehstr1. Karakter null daristr1akanditumpuki. Penyalinanberakhirsetelah n karakterdisalinatausetelahkarakter null daristr2disalin.Sebuahkarakter null selaluditambahkanpadastr1.Jikaterjaditumpang-tindihmakahasilnyatidakterdefinisikan. Contoh: char str2[]="Test string"; char str1[80]="Contoh ", *pstr; pstr=strncat(str1, str2, 4); printf("pstr: %s\nstr1: %s\n",pstr,str1);; Hasilnya: pstr: Contoh Test str1: Contoh Test
FUNGSI PUSTAKA STRING • Fungsi strchr(); Deklarasi: char *strchr(const char *str, int c); Untukmencarikarakterpertama yang sesuaidenganc (sebuahunsigned char) didalam string yang ditunjukolehstr. Karakter null dianggapsebagaibagiandari string. Mengembalikansebuah pointer yang menunjukpadakarakterpertama yang cocok, atau NULL jikatidakditemukan. Contoh: char str[]=“Contoh Test string“, *pstr; pstr=strchr(str, ‘T’); printf("pstr: %s\nstr: %s\n",pstr,str); Hasilnya: pstr: Test string str : Contoh Test string
FUNGSI PUSTAKA STRING • Fungsi strcmp(); Deklarasi: int strcmp(const char *str1, const char *str2); Untukmembandingkanstring yang ditunjukstr1terhadap string yang ditunjukstr2. Mengembalikannilainoljikastr1 and str2sama. Mengembalikannilainegatipjikastr1<str2 ataumengembalikannilaipositipjikastr1>str2. Contoh: char str1[]="contoh", str2[]="Contoh"; if(strcmp(str1,str2)<0) printf("%s < %s\n",str1,str2); else if(strcmp(str1,str2)==0) printf("%s = %s\n",str1,str2); else printf("%s > %s\n",str1,str2); Hasilnya: contoh > Contoh
FUNGSI PUSTAKA STRING • Fungsi strncmp(); Deklarasi: int strncmp(const char *str1, const char *str2, size_t n); Untukmembandingkann bytespertamadaristr1danstr2. Berhentimembandingkansetelahkarakter NULL. Mengembalikannilainoljikan bytes pertama(atausampaikarakter null) daristr1danstr2sama. Mengembalikannilainegatipjikastr1<str2 ataumengembalikannilaipositipjikastr1>str2 . Contoh: char str1[]="contoh Test String", str2[]="contoh Test"; if(strncmp(str1,str2,6)<0) printf("%s < %s\n",str1,str2); else if(strncmp(str1,str2,6)==0) printf("%s = %s\n",str1,str2); else printf("%s > %s\n",str1,str2); Hasilnya: contohTest String = contohTest
FUNGSI PUSTAKA STRING • Fungsi strcoll(); Deklarasi: int strcoll(const char *str1, const char *str2); Untukmembandingkanstr1danstr2. HasilnyabergantungpadapenetapanlokasiLC_COLLATEnya. Mengembalikannilainoljikastr1= str2. Mengembalikannilainegatipjikastr1< str2danakanmengembalikannilaipositipjikastr1> str2 . Contoh: char str1[]="contoh", str2[]="Contoh Test"; if(strcoll(str1,str2)<0) printf("%s < %s\n",str1,str2); else if(strcoll(str1,str2)==0) printf("%s = %s\n",str1,str2); else printf("%s > %s\n",str1,str2); Hasilnya: contoh> ContohTest
FUNGSI PUSTAKA STRING • Fungsi strcpy(); Deklarasi: char *strcpy(char *str1, const char *str2); Untukmenyalin string yang ditunjukolehstr2kestr1. Penyalinanhinggatermasukkarakter null daristr2. Jikastr1danstr2tumpang-tindihhasilnyatidakterdefinisikan. Contoh: char str1[]="contoh", str2[]="Contoh Test", *pstrcpy; pstrcpy=strcpy(str1,str2); printf("pstrcpy: %s\nstr1 : %s\n\n",pstrcpy,str1); Hasilnya: pstrcpy: Contoh Test str1 : Contoh Test
FUNGSI PUSTAKA STRING • Fungsi strncpy(); Deklarasi: char *strncpy(char *str1, const char *str2, size_t n); Untukmenyalinhingga n karakterdaristring yang ditunjukolehstr2kestr1. Penyalinanberhentisetelah n karakterdisalinataukarakter null distr2tercapai.Jikakarakter null dicapai, karakternuldisalinke str1 hingga n karaktertelahdisalin. Contoh: char str1[]="contoh", str2[]="Contoh Test", *pstrcpy; pstrcpy=strncpy(str1,str2,20); printf("pstrcpy: %s\nstr1 : %s\n\n",pstrcpy,str1); Hasilnya: pstrcpy: Contoh Test str1 : Contoh Test
FUNGSI PUSTAKA STRING • Fungsi strcspn(); Deklarasi: size_t strcspn(const char *str1, const char *str2); Untukmencarirangkaiankarakterpertamadalam string str1 yang tidakcocokdengankarakterdalamstr2. Mengembalikan panjang rangkaiankarakter pertama yang ditemukan tidak cocokdengan str2. Contoh: char str1[]="contoh Test String", str2[]="String"; intst; st= (int)strcspn(str1, str2); printf("st: %d\nstr1: %s\nstr2: %s\n",st,str1,str2); Hasilnya: St: 2 str1: contoh Test String str2 : String
FUNGSI PUSTAKA STRING • Fungsi strerror(); Deklarasi: char *strerror(int errnum); Mencarisebuah array internal untuknomorkesalahanerrnumdanmengembalikan pointer yang menunjukkesebuah string pesankesalahan.
FUNGSI PUSTAKA STRING • Fungsi strlen(); Deklarasi: size_t strlen(const char *str); Menghitungpanjang string strtanpamenyertakankarakternullnya.Mengembalikannilaijumlahkarakterdalm string.
FUNGSI PUSTAKA STRING • Fungsi strpbrk(); Deklarasi: char *strpbrk(const char *str1, const char *str2); Mencarikarakterpertamadalam string str1 yang cocokdengansebarangkarakterdi string str2. Mengembalikansebuah pointer yang menunjukkelokasikaraktertersebut. Mengembalikansebuah pointer null jikatidakadakarakterdi string str1 yang cocokdengankarakterdi string str2.
FUNGSI PUSTAKA STRING • Fungsi strrchr(); Deklarasi: char *strrchr(const char *str, int c); Mencarikarakterterakhir c (sebuah unsigned char) di string str. Karakter null dari string strdianggapsebagaibagiandari string str. Mengembalikansebuah pointer char yang menunjukpadakarakterakhir yang cocoktsb., atau null jikatidakditemukan.
FUNGSI PUSTAKA STRING • Fungsi strspn(); Deklarasi: size_t strspn(const char *str1, const char *str2); Mencarirangkaiankarakterpertamadalam string str1 yang berisisembarangkarakter yang terdapatpada string str2. Mengembalikanpanjangrangkaiankaraktertersebut.
FUNGSI PUSTAKA STRING • Fungsi strstr(); Deklarasi: char *strstr(const char *str1, const char *str2); Mencaristring str2 (tidaktermasukkarakter null) yang terdapatdalamstring str1. Mengembalikansebuah pointer yang menunjukke string str2 pertama yang terdapatdalam string str1. Jikatidakditemukan, makaakanmengembalikansebuah pointer null. Jikastr2menunjukkesebuah string denganpanjangnol, makaakanmengembalikan string str1.
FUNGSI KONVERSI STRING Fungsi pustaka untuk operasi string, prototypenya berada di file headerstdlib.h, diantaranya:
LATIHAN • Ketikkansebuahkalimatmelalui keyboard denganmenggunakan • gets() (ataufgets())kemudiandidapatkankeluaranberupalaporantentangjumlahhurufkecildanhurufkapitaldalamkalimattsbdanjumlahsetiaphuruf/anggka yang tdppadakalimattsb. • MasukkannamaAnda, rubahkedalamhurufbesarsemua, balikkanurutanhurufnya, selanjutnyatampilkanhasilnyadilayar. • Ketikkan sebuah kalimat, hitung dan tampilkan jumlah spasinya. • 4. Ketikkan sebuah kalimat, kemudian tampilkan kalimat tsb satu kata perbaris. Asumsikan ada satu spasi yang memisahkan setiap kata dan kalimat diakhiri dengan sebuah tanda titik.
LATIHAN 5. Buat program untuk menghasilkan keluaran sbb : UNIVERSITAS BRAWIJAYA UNIVERSITAS BRAWIJA UNIVERSITAS BRAWI UNIVERSITAS BRA UNIVERSITAS B UNIVERSITAS UNIVERSIT UNIVERS UNIVE UNI U
LATIHAN • Ketikkansebuahbilangan, ubahlahmenjadibilangandengandilengkapititikribuansertaubahlahmenjadibentukteks. Contoh: Biladiketikkan 15750, diubahmenjadi: 15.750 danteks: lima belasributujuhratus lima puluh rupiah.