STRING

48
STRING

description

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 . - PowerPoint PPT Presentation

Transcript of STRING

Page 1: STRING

STRING

Page 2: STRING

• Menjelaskan tentang konsep string • Menjelaskan operasi I/O pada string.• Menjelaskan cara mengakses elemen string• Menjelaskan berbagai fungsi mengenai

string

SASARAN

Page 3: STRING

KONSEP STRING

• String dipakai untuk memanipulasi 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” diakhiri dengan NULL (\0)

P e m r o g r a m a n C + + \0

Page 4: STRING

• Deklarasi Variabel string char nama_var[n];

Variabel string dengan panjang maksimal n karakter (termasuk karakter NULL) bernama nama_var.

• Inisialisasi String

Contoh:char name[] = {'R','I','N','I',’\0’};char name[] = “RINI”;Char name[10] = ”String”;Catatan: karakter akhir NULL wajib ada diakhir string.

Bila memakai pembatasan elemen array pada inisialisasi, maka jumlah karakter harus tidak melebihi elemen array.

KONSEP STRING

Page 5: STRING

INPUT DATA STRING

• Dengan fungsi gets() atau scanf()

gets(nama_array);

scanf(“%s”, nama_array);

fgets(nama_array, sizeof nama_array, stdin);

Keterangan :

• nama_array adalah variabel bertipe array of char • Kalau memakai scanf() dg format %s tidak membaca white-space;

untuk menggantikan dpt dipakai format %[^\n].• Untuk scanf(), di depan nama_array boleh diberi & boleh tidak

Page 6: STRING

OUTPUT DATA STRING

• Fungsi yang dapat digunakan adalah puts() atau printf(). puts(var_string);printf("%s",var_string);

Keterangan:• var_string adalah berupa array of char • puts() secara otomatis menambahkan karakter '\n' di akhir string

Page 7: 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)."); //memasukkan dr keyboard gets(teks); for(i=0; teks[i]; i++) jumkar++; printf("\nJumlah karakter = %d\n", jumkar); getch(); return(0);}

Page 8: STRING

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’;

Page 9: STRING

#include <stdio.h>#define MAKS 30int 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++;

CONTOH STRING

Page 10: STRING

FUNGSI PUSTAKA STRING

Fungsi pustaka untuk operasi string, prototypenya berada di file header string.h, di antaranya:

memchr(); memcmp(); memcpy(); memmove();

memset(); strcat(); strncat(); strchr();

strcmp(); strncmp(); strcoll(); strcpy();

strncpy(); strcspn(); strerror(); strlen();

strpbrk(); strrchr(); strspn(); strstr();

strxfrm(); strxfrm();

Page 11: STRING

FUNGSI PUSTAKA STRING

A. Fungsi memchr()Deklarasi:

void *memchr(const void *str, int c, size_t n);Untuk mencari karakter pertama c (sebuah unsigned char) di dalam n pertama dari string yang ditunjuk oleh parameter str. Mengembalikan pointer yang menunjuk ke karakter pertama yang sesuai, atau NULL jika tidak ditemukan.

Contoh:char nama[] = “Maria Magdalena Tiahahu";if( memchr(nama,‘T',strlen(nama)) == NULL ) printf( “Tidak ditemukan karakter T\n" );else printf( “Ditemukan karakter T\n" );

Page 12: STRING

FUNGSI PUSTAKA STRING

B. 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 walaupun setelah 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 lebih kecil str2"); else printf(" str1 lebih besar str2");

Page 13: STRING

FUNGSI PUSTAKA STRING

C. Fungsi memcpy ();Deklarasi:

void *memcpy(void *str1, const void *str2, size_t n);Untuk menyalin n karakter dari str2 ke str1. Jika str1 dan str2 tumpang tindih maka hasilnya menjadi tidak terdefinisikan.

Contoh: char string2[]="test string"; char string1[80]; memcpy (string1,string2,strlen(string2)+1);

Page 14: STRING

FUNGSI PUSTAKA STRING

D. Fungsi memmove();Deklarasi:

void *memmove(void *str1, const void *str2, size_t n);Untuk menyalin n karakter dari str2 ke str1. Jika str1 dan str2 tumpang tindih, pertama membaca str1 secara lengkap dan kemudian ditulis ke str2 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

Page 15: STRING

FUNGSI PUSTAKA STRING

E. Fungsi memset();Deklarasi:

void *memset(void *str, int c, size_t n);Untuk menyalin karakter c (sebuah unsigned char) pada n 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

Page 16: STRING

FUNGSI PUSTAKA STRING

F. Fungsi strcat();Deklarasi:

char *strcat(char *str1, const char *str2);Untuk menambahkan string yang ditunjuk oleh str2 ke akhir dari string yang ditunjuk oleh str1. Karakter null dari str1 akan ditumpuki. Penyalinan berakhir setelah karakter null dari str2 disalin. Jika terjadi tumpang-tindih maka hasilnya tidak terdefinisikan.

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

Page 17: STRING

FUNGSI PUSTAKA STRING

G. Fungsi strcat();Deklarasi:

char *strncat(char *str1, const char *str2, size_t n);Untuk menambahkan n karakter dari string yang ditunjuk oleh str2 ke akhir dari string yang ditunjuk oleh str1. Karakter null dari str1 akan ditumpuki. Penyalinan berakhir setelah n karakter disalin atau setelah karakter null dari str2 disalin. Sebuah karakter null selalu ditambahkan pada str1. Jika terjadi tumpang-tindih maka hasilnya tidak terdefinisikan.

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

Page 18: STRING

FUNGSI PUSTAKA STRING

H. Fungsi strchr();Deklarasi:

char *strchr(const char *str, int c);Untuk mencari karakter pertama yang sesuai dengan c (sebuah unsigned char) di dalam string yang ditunjuk oleh str. Karakter null dianggap sebagai bagian dari string. Mengembalikan sebuah pointer yang menunjuk pada karakter pertama yang cocok, atau NULL jika tidak ditemukan.

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

Page 19: STRING

FUNGSI PUSTAKA STRING

I. Fungsi strcmp();Deklarasi:

int strcmp(const char *str1, const char *str2);Untuk membandingkan string yang ditunjuk str1 terhadap string yang ditunjuk str2. Mengembalikan nilai nol jika str1 and str2 sama. Mengembalikan nilai negatip jika str1 <str2 atau mengembalikan nilai positip jika str1>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

Page 20: STRING

FUNGSI PUSTAKA STRING

J. Fungsi strncmp();Deklarasi:

int strncmp(const char *str1, const char *str2, size_t n);Untuk membandingkan n bytes pertama dari str1 dan str2. Berhenti membandingkan setelah karakter NULL. Mengembalikan nilai nol jika n bytes pertama(atau sampai karakter null) dari str1 dan str2 sama. Mengembalikan nilai negatip jika str1 <str2 atau mengembalikan nilai positip jika str1>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: contoh Test String = contoh Test

Page 21: STRING

FUNGSI PUSTAKA STRING

K. Fungsi strcoll();Deklarasi:

int strcoll(const char *str1, const char *str2);Untuk membandingkan str1 dan str2. Hasilnya bergantung pada penetapan lokasi LC_COLLATEnya. Mengembalikan nilai nol jika str1 == str2. Mengembalikan nilai negatip jika str1 < str2 dan akan mengembalikan nilai positip jika str1 > 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 > Contoh Test

Page 22: STRING

FUNGSI PUSTAKA STRING

L. Fungsi strcpy();Deklarasi:

char *strcpy(char *str1, const char *str2);Untuk menyalin string yang ditunjuk oleh str2 ke str1. Penyalinan hingga termasuk karakter null dari str2. Jika str1 dan str2 tumpang-tindih hasilnya tidak terdefinisikan.

Contoh: char str1[]="contoh", str2[]="Contoh Test", *pstrcpy; pstrcpy=strcpy(str1,str2); printf("pstrcpy: %s\nstr1 : %s\n\n",pstrcpy,str1);

Hasilnya:pstrcpy: Contoh Teststr1 : Contoh Test

Page 23: STRING

FUNGSI PUSTAKA STRING

M. Fungsi strncpy();Deklarasi:

char *strncpy(char *str1, const char *str2, size_t n);Untuk menyalin hingga n karakter dari string yang ditunjuk oleh str2 ke str1. Penyalinan berhenti setelah n karakter disalin atau karakter null di str2 tercapai. Jika karakter null dicapai, karakter nul disalin ke str1 hingga n karakter telah disalin.

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 Teststr1 : Contoh Test

Page 24: STRING

FUNGSI PUSTAKA STRING

N. Fungsi strcspn();Deklarasi:

size_t strcspn(const char *str1, const char *str2);Untuk mencari rangkaian karakter pertama dalam string str1 yang tidak cocok dengan karakter dalam str2. Mengembalikan panjang rangkaian karakter pertama yang ditemukan tidak cocok dengan str2.

Contoh: char str1[]="contoh Test String", str2[]="String"; int st; st= (int)strcspn(str1, str2); printf("st: %d\nstr1: %s\nstr2: %s\n",st,str1,str2);

Hasilnya:St: 2str1: contoh Test Stringstr2 : String

Page 25: STRING

FUNGSI PUSTAKA STRING

O. Fungsi strerror();Deklarasi:

char *strerror(int errnum);Mencari sebuah array internal untuk nomor kesalahan errnum dan mengembalikan pointer yang menunjuk ke sebuah string pesan kesalahan.

Page 26: STRING

FUNGSI PUSTAKA STRING

P. Fungsi strlen();Deklarasi:

size_t strlen(const char *str);Menghitung panjang string str tanpa menyertakan karakter nullnya. Mengembalikan nilai jumlah karakter dalm string.

Page 27: STRING

FUNGSI PUSTAKA STRING

Q. Fungsi strpbrk();Deklarasi:

char *strpbrk(const char *str1, const char *str2);Mencari karakter pertama dalam string str1 yang cocok dengan sebarang karakter di string str2. Mengembalikan sebuah pointer yang menunjuk ke lokasi karakter tersebut. Mengembalikan sebuah pointer null jika tidak ada karakter di string str1 yang cocok dengan karakter di string str2.

Page 28: STRING

FUNGSI PUSTAKA STRING

R. Fungsi strrchr();Deklarasi:

char *strrchr(const char *str, int c);Mencari karakter terakhir c (sebuah unsigned char) di string str. Karakter null dari string str dianggap sebagai bagian dari string str. Mengembalikan sebuah pointer char yang menunjuk pada karakter akhir yang cocok tsb., atau null jika tidak ditemukan.

Page 29: STRING

FUNGSI PUSTAKA STRING

S. Fungsi strspn();Deklarasi:

size_t strspn(const char *str1, const char *str2);Mencari rangkaian karakter pertama dalam string str1 yang berisi sembarang karakter yang terdapat pada string str2. Mengembalikan panjang rangkaian karakter tersebut.

Page 30: STRING

FUNGSI PUSTAKA STRING

T. Fungsi strstr();Deklarasi:

char *strstr(const char *str1, const char *str2);Mencari string str2 (tidak termasuk karakter null) yang terdapat dalam string str1. Mengembalikan sebuah pointer yang menunjuk ke string str2 pertama yang terdapat dalam string str1. Jika tidak ditemukan, maka akan mengembalikan sebuah pointer null. Jika str2 menunjuk ke sebuah string dengan panjang nol, maka akan mengembalikan string str1.

Page 31: STRING

FUNGSI PUSTAKA STRING

U. Fungsi strtok();Deklarasi:

char *strtok(char *str1, const char *str2);Mengurai string str1 menjadi serangkaian token. Jika str1 dan str2 tidak nol, maka dimulai urutan pencarian berikut. Dicari karakter pertama dalam str1 yang tidak terdapat pada str2. Jika str1 terdiri dari seluruh karakter dalam str2, berarti tidak ada token dan dikembalikan sebuah pointer null. Jika karakter tersebut ditemukan, maka ditandai sebagai awal token pertama. Kemudian mencari karakter berikutnya dari str1 yang terdapat dalam str2. Jika tidak ditemukan, maka token pertama akan mencapai hingga akhir str1. Jika ditemukan, maka karakter tersebut diganti dengan sebuah karakter null, sebagai akhir dari token. Fungsi strtok() kemudian menyimpan dan mengembalikan posisi berikutnya secara internal.Pemanggilan berikutnya dengan pointer null untuk mengganti str1 akan menyebabkan posisi yang disimpan sebelumnya dipakai untuk memulai mencari dari titik tersebut. Setiap kali pemanggilan berikutnya dapat menggunakan nilai yang berbeda untuk str2.Fungsi adak mengembalikan sebuah pointer ke token pertama di str1. Jika token tidak ditemukan maka fungsi akan mengembalikan pointer null .

Page 32: STRING

FUNGSI PUSTAKA STRING

Contoh untuk Penggunaan Fungsi strtok();#include<stdio.h>#include<conio.h>

int main(void){ char kalimat[]="Bahasa Pemrograman Komputer C++"; char *kata[50]; int i; kata[0]=strtok(kalimat," "); if(kata[0]==NULL) printf("Tidak ditemukan satu kata pun.\n"); else { for(i=1;i<50;i++) { kata[i]=strtok(NULL," "); if(kata[i]==NULL) break; } for(i=0;i<50;i++) { if(kata[i]==NULL) break; printf("Kata ke-%d: %s\n",i,kata[i]); } } getch(); return 0;}

Page 33: STRING

FUNGSI PUSTAKA STRING

V. Fungsi strxfrm();Deklarasi:

size_t strxfrm(char *str1, const char *str2, size_t n);Mentranformasi string str2 dan menempatkan hasilnya ke str1. Menyalin paling banyak n karakter ke str1 termasuk karakter akhir null. Mengembalikan panjang string yang berubah (tanpa karakter null).Contoh:

int main(void){ int lstr; char *s1 = "Pemrograman C"; char *s2 = "Komputer"; lstr=strxfrm(s1,s2,7); printf("strxfrm(s1,s2,7)=>s1: %s s2: %s lstr: %d\n\n",s1,s2,lstr); lstr=strxfrm(s1,s2,9); printf("strxfrm(s1,s2,9)=>s1: %s s2: %s lstr: %d\n\n",s1,s2,lstr); getch(); return(0);}

Page 34: STRING

FUNGSI KONVERSI STRING

Fungsi pustaka untuk operasi string, prototypenya berada di file header stdlib.h, di antaranya:

atof(); atoi(); atol(); strtod();

strtol(); strtoul();

Page 35: STRING

FUNGSI KONVERSI STRING

A. Fungsi atof();Deklarasi:

double atof(const char *str);Fungsi atof ini mengenali semua karakter yang membentuk bilangan floating point. Proses pengubahan akan berhenti jika ditemukan karakter-karakter yang bukan pembentuk floating point, misalnya : spasi,tanda baca (selain titik) dan karakter lain yang bukan E atau e. Jika string tidak dapat diubah menjadi tipe double, hasilnya menjadi 0. Jika terjadi overflow, atof akanmenghasilkan HUGE_VAL dengan tanda plus atau minus.

#include <stdlib.h>int main() { char bilangan[5]; double bil; printf("Masukkan sebuah bilangan : "); gets(bilangan); bil=atof(bilangan); printf("\n\nBilangan hasil konversi adalah %6.1lf",bil);getch();}

Page 36: STRING

FUNGSI KONVERSI STRING

B. Fungsi atoi();Deklarasi:

int atoi(const char *str);Fungsi atoi ini mengenali semua karakter yang membentuk bilangan integer. Proses pengubahan akan berhenti jika ditemukan karakter-karakter yang bukan pembentuk integer, misalnya : spasi,tanda baca dan karakter lain yang bukan angka. Jika string tidak dapat diubah menjadi tipe integer, hasilnya menjadi 0. Jika berhasil, atoi akanmenghasilkan nilai bilangan integer.

#include <stdlib.h>int main() { char bilangan[5]; int bil; printf("Masukkan sebuah bilangan : "); gets(bilangan); bil=atoi(bilangan); printf("\n\nBilangan hasil konversi adalah %d",bil);getch();}

Page 37: STRING

FUNGSI KONVERSI STRING

C. Fungsi atol();Deklarasi:

long int atol(const char *str);Fungsi atol ini mengenali semua karakter yang membentuk bilangan long integer. Proses pengubahan akan berhenti jika ditemukan karakter-karakter yang bukan pembentuk integer, misalnya : spasi,tanda baca dan karakter lain yang bukan angka. Jika string tidak dapat diubah menjadi tipe integer, hasilnya menjadi 0. Jika berhasil, atol akanmenghasilkan nilai bilangan long integer.

#include <stdlib.h>int main() { char bilangan[15]; long int bil; printf("Masukkan sebuah bilangan : "); gets(bilangan); bil=atol(bilangan); printf("\n\nBilangan hasil konversi adalah %d",bil);getch();}

Page 38: STRING

FUNGSI KONVERSI STRING

D. Fungsi strtod();Deklarasi:

double strtod(const char *str, char **endptr);Fungsi strtod untuk mengkonversi string str menjadi bilangan bertipe double. Karakter whitespace (spasi, tab, carriage return, baris-baru, tab vertical, atau formfeed) diabaikan. Bilangan dapat terdiri atas tanda (+/-), serangkaian angka dengan sebuah karakter decimal tertentu, dan karakter e atau E diikuti oleh sebuah eksponen bertanda atau tidak. Konversi berhenti ketika ditemui karakter tidak dikenal. Argumen endptr adalah sebuah pointer to pointer. Alamat dari karakter tak dikenal yang menyebabkan konversi berhenti disimpan dalam pointer yang ditunjuk oleh endptr. Konversi berhasil akan mengembalikan nilai bilangan pecahan hasil konversi. Jika konversi gagal, dikembalikan nilai 0. Jika nilai diluar jangkauan tipe double, maka dikembalikan HUGE_VALUE dengan tanda dan ERANGE disimpan dalam errno. Jika nilai konversi terlalu kecil di luar jangkauan tipe double, maka dikembalikan 0 dan ERANGE disimpan dalam errno.

Page 39: STRING

Contoh Fungsi strtod()#include <stdio.h>#include <conio.h>#include <stdlib.h>

int main (){ char Orbits[] = "365.24 29.53"; char * pEnd; double d1, d2; d1 = strtod (Orbits,&pEnd); d2 = strtod (pEnd,NULL); printf("d1: %f d2: %f\n\n",d1,d2); printf ("Bulan mengelilingi bumi %f kali per tahun.\n", d1/d2); getch(); return 0;}

Page 40: STRING

FUNGSI KONVERSI STRING

D. Fungsi strtol();Deklarasi:

long int strtol(const char *str, char **endptr, int base);Fungsi strtol untuk mengkonversi string str menjadi bilangan bertipe long int. Karakter whitespace (spasi, tab, carriage return, baris-baru, tab vertical, atau formfeed) diabaikan. Bilangan dapat terdiri atas tanda (+/-) dan serangkaian angka. Konversi berhenti saat ditemui karakter tidak dikenal. Jika argument base (radix) bernilai 0, maka konversi bergantung pada dua karakter pertama. Jika karakter pertama berupa sebuah angka 1 s.d 9, maka berbasis 10 (decimal). Jika digit pertama adalah 0 dan digit kedua berupa angka 1 s.d 7, maka berbasis 8 (octal). Jika digit pertama 0 dan karakter kedua x atau X, maka berbasis 16 (hexadecimal).

Page 41: STRING

FUNGSI KONVERSI STRING

Jika agumen base bernilai 2 s.d. 36, maka argument base (radiks) digunakan dan karakter di luar definisi base tidak dapat dikonversi. Untuk base bernilai 11 hingga 36, karakter A-Z (a-z) digunakan. Jika base bernilai 16, maka “0x” atau “0X” dapat ditulis sebelum angka/bilangan.Argumen endptr merupakan sebuah pointer ke pointer. Alamat karakter saat konversi berhenti disimpan dalam pointer yang ditunjuk oleh endptr.Konversi berhasil akan mengembalikan bilangan hasil konversi. Jika konversi gagal, dikembalikan nilai 0. Jika nilai di luar cakupan tipe long int, maka LONG_MAX atau LONG_MIN dikembalikan beserta tandanya dan ERANGE disimpan dalam variable errno.

Page 42: STRING

#include <stdio.h>#include <stdlib.h>#include <conio.h>

int main (){ char bil[] = "2001 60c0c0 -1101110100110100100000 0x6fffff"; char * pEnd; long int li1, li2, li3, li4; li1 = strtol (bil,&pEnd,10); li2 = strtol (pEnd,&pEnd,16); li3 = strtol (pEnd,&pEnd,2); li4 = strtol (pEnd,NULL,0); printf ("Hasil konversi dari %s adalah:\n",bil); printf ("Nilai li1: %ld\nNilai li2: %ld\nNilai li3: %ld\nNilai li4: %ld\n", li1, li2, li3, li4); getch(); return 0;}

Contoh Fungsi strtol()

Page 43: STRING

FUNGSI KONVERSI STRING

E. Fungsi strtoul();Deklarasi:unsigned long int strtoul(const char *str, char **endptr, int base);

Fungsi strtoul untuk mengkonversi string str menjadi bilangan bertipe unsigned long int. Karakter whitespace (spasi, tab, carriage return, baris-baru, tab vertical, atau formfeed) dilompati. Bilangan dapat terdiri atas tanda (+/-) dan serangkaian angka. Konversi berhenti ketika pertama ditemui karakter tidak dikenal. Jika argument base (radix) bernilai 0, maka konversi bergantung pada dua karakter pertama. Jika karakter pertama berupa sebuah angka 1 s.d 9, maka berbasis 10 (decimal). Jika digit pertama adalah 0 dan digit kedua berupa angka 1 s.d 7, maka berbasis 8 (octal). Jika digit pertama 0 dan karakter kedua x atau X, maka berbasis 16 (hexadecimal).

Page 44: STRING

FUNGSI KONVERSI STRING

Jika agumen base bernilai 2 s.d. 36, maka argument base (radiks) digunakan dan karakter di luar definisi base tidak dapat dikonversi. Untuk base bernilai 11 hingga 36, karakter A-Z (a-z) digunakan. Jika base bernilai 16, maka “0x” atau “0X” dapat ditulis sebelum angka/bilangan.Argumen endptr merupakan sebuah pointer ke pointer. Alamat karakter saat konversi berhenti disimpan dalam pointer yang ditunjuk oleh endptr.Konversi berhasil akan mengembalikan bilangan hasil konversi. Jika konversi gagal, dikembalikan nilai 0. Jika nilai di luar cakupan tipe long int, maka LONG_MAX atau LONG_MIN dikembalikan beserta tandanya dan ERANGE disimpan dalam variable errno.

Page 45: STRING

Contoh Fungsi strtoul()#include <conio.h>#include <stdio.h>#include <stdlib.h>

int main (){ char inputBil [256]; unsigned long ul; printf ("Masukkan bilangan bulat: "); fgets (inputBil,256,stdin); ul = strtoul (inputBil,NULL,0); printf ("Nilai bilangan dimasukkan: %lu\n",ul); printf ("Dikali 2: 2 x %ul = %ul\n",ul,ul*2); getch(); return 0;}

Page 46: STRING

LATIHAN

1. Ketikkan sebuah kalimat melalui keyboard dengan menggunakan gets() (atau fgets()) kemudian didapatkan keluaran berupa

laporan tentang jumlah huruf kecil dan huruf kapital dalam kalimat tsb dan jumlah setiap huruf/anggka yang tdp pada kalimat tsb.

2. Masukkan nama Anda, rubah ke dalam huruf besar semua, balikkan urutan hurufnya, selanjutnya tampilkan hasilnya di layar.

3. 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.

Page 47: STRING

5. Buat program untuk menghasilkan keluaran sbb :UNIVERSITAS BRAWIJAYAUNIVERSITAS BRAWIJAUNIVERSITAS BRAWIUNIVERSITAS BRAUNIVERSITAS BUNIVERSITASUNIVERSITUNIVERSUNIVEUNIU

LATIHAN

Page 48: STRING

• Ketikkan sebuah bilangan, ubahlah menjadi bilangan dengan dilengkapi titik ribuan serta ubahlah menjadi bentuk teks. Contoh: Bila diketikkan 15750, diubah menjadi: 15.750 dan teks: lima belas ribu tujuh ratus lima puluh.

• Dengan mengetikkan sebuah paragrap, ubahlah tampilannya menjadi bentuk rata kiri dan rata kanan (justify) dalam lebar kolom tertentu.

LATIHAN