Anda di halaman 1dari 41

Kuliah 10

Karakter dan String


Dasar Pemrograman
Outline
1. Karakter
2. String
3. Mengolah String
4. Array dari String
1

KARAKTER
Karakter
• Literal karakter adalah integer yang ditulis sebagai
suatu karakter, diapit oleh tanda kutip tunggal ('),
misalnya ‘x’. Contoh nilai ‘123’ tidak bisa
dioperasikan dalam aritmatika. nilai ’123’ dalam
karakter bermakna {
• Nilai dari literal karakter adalah nilai numerik
karakter pada suatu set karakter, misalnya ASCII
(American Standard Code for Information
Interchange).
• Format untuk membaca dan menuliskan karakter
adalah %c.
Tabel ASCII
Standard Library
• Beberapa library C untuk menangani
karakter dan string
– <ctype.h>: mengandung fungsi-fungsi
untuk menangani karakter.
– <stdlib.h>: mengandung fungsi-fungsi
untuk konversi string.
– <string.h>: mengandung fungsi-fungsi
untuk mengolah string.
Karakter dan Bilangan
Menuliskan representasi karakter dan integer dari suatu
karakter
#include <stdio.h>
int main(){
char ch1 = 'A';
char ch2 = 35;
char ch3 = ch1 + ch2;
printf("%c - %d\n", ch1, ch1);
printf("%c - %d\n", ch2, ch2);
printf("%c - %d\n", ch3, ch3); A - 65
return 0; # - 35
} d - 100
Escape Sequence
Beberapa karakter dapat direpresentasi oleh escape
sequence
ES Keterangan ES Keterangan
\a bunyi speaker \v tab vertikal
\b backspace (mundur ke \\ backslash
kiri)
\f \' kutip-tunggal
formfeed (ganti
halaman) \" kutip-ganda
\n newline (ganti baris) \? tanda tanya
\r carriage return (ke awal
baris) \ooo Bilangan oktal

\t tab horizontal \xhh Bilangan heksadesimal


Escape Sequence
Menuliskan karakter escape sequence
#include <stdio.h>
int main(){
char tab1='\b';
char tab2='\t';
char line='\n';
printf("a%cb%c", tab1, line);
printf("a%cb%c", tab2, line);
printf("%d dan %d\n", tab1, tab2);
return 0;
}
b
a b
8 dan 9
Membaca dan Menulis Karakter
#include <stdio.h> x
int main(){ upnvj
char ch, c[5]; xData yang dibaca:
int i; upnv
scanf("%c",&ch);
for (i=0; i<5; i++)
scanf("%c", &c[i]);
printf("%c", ch);
printf("Data yang dibaca:\n");
for (i=0; i<5; i++)
printf("%c", c[i]);
return(0);
}

Input ‘Enter’ (newline) juga dihitung sebagai karakter.


Fungsi getchar() dan putchar()
• Fungsi getchar()
– Digunakan untuk membaca sebuah karakter
dari keyboard, tidak dapat membaca karakter
dari standard input lainnya (misalnya file).
• Fungsi putchar()
– Digunakan untuk menuliskan sebuah
karakter ke layar, tidak dapat menuliskan
karakter ke standard output lainnya
(misalnya file, printer).
Fungsi getchar() dan putchar()
Menggunakan getchar dan putchar
#include <stdio.h> Masukkan karakter
A
int main(){ Anda mengetik: A
char c;
printf("Masukkan karakter\n");
c = getchar();
Masukkan karakter
printf("Anda mengetik: ");
upnvj
putchar(c);
Anda mengetik: u
return 0;
}
Fungsi-fungsi Karakter
Fungsi-fungsi untuk menangani karakter pada library
<ctype.h>
Fungsi Deskripsi
int isblank(char) Kosong?
int isdigit(char) Angka?
int isalpha(char) Huruf?
int isanum(char) Angka atau huruf?
int isxdigit(char) Bilangan heksadesimal?
int islower(char) Huruf kecil?
int isupper(char) Huruf besar?
Fungsi-fungsi Karakter
Fungsi-fungsi untuk menangani karakter pada library
<ctype.h>
Fungsi Deskripsi
int tolower(char) Mengubah ke huruf kecil
int toupper(char) Mengubah ke huruf besar
int isspace(char) White space? (\n, \f, \r, \t, \v)
int iscntrl(char) Karakter kontrol? (\t, \v, \f, \a, \b, \r, \n)
int ispunct(char) Tanda baca? ($ # ( ) [ ] { } ; : %)
int isprint(char) Tampak pada layar termasuk spasi?
int isgraph(char) Tampak pada layar selain spasi?
Fungsi-fungsi Karakter
#include<stdio.h> Q
#include<ctype.h> Q bukan huruf kecil
huruf kecil Q adalah q
int main () {
char v;
scanf("%c", &v);
if (islower(v))
printf("%c adalah huruf kecil\n", v);
else{
printf("%c bukan huruf kecil\n", v);
printf("huruf kecil %c "
"adalah %c\n", v, tolower(v));
}
return(0); r
} r adalah huruf kecil
2

STRING
String
• String adalah array dari karakter yang
diakhiri dengan karakter NULL ('\0').
• Literal string ditulis menggunakan
tanda kutip ganda ("), misalnya “UPN”.
• Format untuk membaca dan
menuliskan string adalah %s.
• Seperti halnya array, string merupakan
pointer ke karakter pertama.
String
String adalah array
#include <stdio.h>
int main(){
char *s1 = "upn veteran";
char s2[] = "jakarta";
char s3[] = {'d','a','s','p','r','o','\0'};
char *s4; // dideklarasikan dengan pointer
s4 = s3;
printf("%s\n%s\n%s\n", s1, s2, s3);
printf("%c\n", s2[2]); upn veteran
printf("%c\n", s4[4]); jakarta
return(0); daspro
} k
r
String
Membaca string dari input user
#include <stdio.h>

int main(){
char nama[30];
printf("Siapa nama anda? ");
scanf("%s", nama);
printf("Halo %s, salam kenal!", nama);

return 0; Siapa nama anda? Indah


} Halo Indah, salam kenal!

Siapa nama anda? Indah Permatasari


Halo Indah, salam kenal!
String
• Fungsi scanf() hanya membaca satu
string sebelum white space.
• Untuk membaca banyak string dalam
satu baris, dapat digunakan salah satu
dari cara berikut
– Membaca karakter demi karakter
– Menggunakan fungsi gets() atau fgets()
Fungsi fgets() dan puts()
• Fungsi gets(char *s)
– Memasukkan karakter ke array hingga ditemu-
kan karakter newline (\n) atau end-of-file (EOF).
• Fungsi *fgets(char *s, int n, FILE *stream)
– Memasukkan karakter ke array hingga ditemu-
kan karakter newline, EOF, atau data yang dibaca
sudah mencapai n-1 byte.
• Fungsi puts(const char *s)
– Mencetak string, diakhiri dengan karakter
newline.
Membaca Sebaris Teks
Membaca karakter demi karakter
#include <stdio.h>
int main(){
char nama[30], ch;
int i = 0;
printf("Nama? ");
ch = getchar(); Nama? Indah Permatasari
while(ch != '\n'){
Halo Indah Permatasari!
nama[i] = ch;
i++;
ch = getchar();
}
nama[i] = '\0';
printf("Halo %s", nama);
return 0;
}
Membaca Sebaris Teks
Menggunakan gets() dan fgets()
#include <stdio.h>
int main(){
char nama[30], alamat[40];
printf("Nama? "); Nama? Indah Permatasari
gets(nama); Alamat? Jl. Cemara
Nama: Indah Permatasari
printf("Alamat? "); Alamat: Jl. Cemara
fgets(alamat, 40, stdin);

printf("Nama: "); puts(nama);


printf("Alamat: "); puts(alamat);
return 0;
}
3

MENGOLAH STRING
Konversi String
Fungsi-fungsi untuk konversi string
pada library <stdlib.h>
Fungsi Keterangan
atof(s) Mengkonversi string s ke floating number.
atoi(s) Mengkonversi string s ke integer.
atol(s) Mengkonversi string s ke long integer.
strtod(nptr, endptr) Mengkonversi string nPtr ke double.
strtol(nptr, endptr, base) Mengkonversi string nPtr ke long integer.
strtoul(nptr, endptr, base) Mengkonversi string nPtr ke unsigned long
integer.
Konversi String
Mengubah string menjadi bilangan
#include <stdio.h>
#include <stdlib.h>

int main(){
char s[3] = "005";
printf("Integer\t: %d\n", atoi(s)*2);
printf("Float\t: %.2f\n", atof(s)/2.0);
printf("Long \t: %ld\n", atol(s)*4);
return 0;
}
Integer : 10
Float : 2.50
Long : 20
Panjang String
Fungsi panjang_str() untuk menghitung panjang atau
jumlah karakter sebuah string.

Hitung karakter satu persatu sampai ditemukan ‘\0’.

int panjang_str(const char str[]) {


int i;
for (i = 0; str[i] != '\0'; i++);
return i;
}
Salin String
Fungsi untuk menyalin suatu string ke string lain.
Salin karakter satu persatu sampai ditemukan ‘\0’.

string string
tujuan asal

void salin(char T[], const char A[]) {


int i;
for (i = 0; A[i] != '\0'; i++)
T[i] = A[i];
T[i] = '\0';
}
Salin String
Fungsi untuk menyalin string menggunakan pointer
void salin(char *T, const char *A) {
while (*A != '\0'){
*T = *A;
T++, A++;
}
}

Apa nilai s setelah dilakukan pemanggilan fungsi sbb:


char s[100];
salin(s, "upnvj");
Subset String
Fungsi untuk mengambil subset dari string
#include <stdio.h>
void substring(char *T, const char *A,
int k, int n){
int i;
for (i=k; i<k+n; i++)
T[i-k] = A[i];
T[i-k] = '\0';
}

Apa nilai s setelah dilakukan pemanggilan fungsi sbb:


char s[100];
substring(s, "jakarta", 2, 3);
Fungsi-fungsi String
Fungsi-fungsi untuk string pada library <string.h>
Fungsi Keterangan
strcpy(s1, s2) Menyalin string s2 ke s1.
strncpy(s1, s2, n) Salin max n karakter s2 ke s1.
strcat(s1, s2) Menambahkan string s2 ke s1.
strncat(s1, s2) Menambahkan max n karakter S2 ke S1
strcmp(s1, s2) Membandingkan string s1 dengan s2
strcmp(s1, s2, n) Membandingkan hingga n karakter s1 dengan s2
strerror(errornum) Memetakan errornum ke dalam full text string di
compiler.
strlen(s) Mencari panjang string s
Fungsi-fungsi String
Fungsi pencarian string pada library <string.h>
Fungsi Keterangan
strchr(s, c) Mencari kemunculan pertama karakter c di string s
strrchr(s, c) Mencari kemunculan terakhir karakter c di string s.
strcspn(s1, s2) Mencari jumlah karakter string s1 yang tidak ada di s2
strspn(s1, s2) Mencari jumlah karakter yang ada di string s1 dan s2
strpbrk(s1, s2) Mencari kemunculan pertama satu karakter string s2 di
string s1, mengembalikan pointer ke karakter tsb di s1.
strstr(s1, s2) Mencari kemunculan pertama string s2 di string s1.
strtok(s1, s2) Memecah string s1 yang dipisahkan oleh karakter-
karakter di s2 ke dalam token-token.
4

ARRAY DARI STRING


Array dari String
• Misal Anda akan menyimpan 5 daftar
nama mahasiswa ke dalam array. Maka
dibutuhkan deklarasi array dua
dimensi, yaitu:
– Baris: untuk menampung banyaknya nama
mahasiswa
– Kolom: untuk menampung panjang string
nama.
Array dari String
Indah Nian (10)
#include <stdio.h> Elokwati (8)
#include <string.h> Nan Elok (8)
#define N 5 Amboi (5)
#define WIDTH 40 Mantab (6)

int main() {
int i;
char nama[N][WIDTH] = {"Indah Nian",
"Elokwati", "Nan Elok", "Amboi", "Mantab"};

for (i=0; i<N; i++)


printf("%s (%lu)\n", nama[i], strlen(nama[i]));
return 0;
}
Array dari String
• Menginput string nama ke array
– Jika setiap nama hanya terdiri dari satu
string, maka data nama dapat dimasukkan
dengan pemisah spasi ataupun newline,
dan dapat dibaca oleh fungsi scanf().
– Jika setiap nama terdiri dari dua atau lebih
string, data nama dapat dimasukkan
dengan pemisah newline, dan dapat
dibaca oleh fungsi gets() atau fgets().
Array dari String
Membaca input string tunggal ke array
3
#include <stdio.h>
Elok Cantik Indah
int main(){
Elok
int i, N;
Cantik
scanf("%d", &N);
Indah
char nama[N][40];

for (i=0; i<N; i++) 3


scanf("%s", nama[i]); Elok
Cantik
for (i=0; i<N; i++) Indah
puts(nama[i]); Elok
return 0; Cantik
} Indah
Array dari String
Memasukkan input sebaris string nama ke array (A)
#include <stdio.h> Membaca karakter
newline agar tidak ikut
tersimpan ke array
int main(){
int i, N;
scanf("%d\n", &N);
char nama[N][40];
for (i=0; i<N; i++){ 3
gets(nama[i]); Indah Nian
} Elok Menawan
for (i=0; i<N; i++) Cantik Memukau
puts(nama[i]); Indah Nian
return 0; Elok Menawan
} Cantik Memukau
Array dari String
Memasukkan input sebaris string nama ke array (B)
#include <stdio.h>
int main(){
int i, N;
Membaca
scanf("%d", &N);
karakter
char ch, nama[N][40];
newline
scanf("%c", &ch);
for (i=0; i<N; i++){
3
printf("Nama %d? ",i+1);
Nama 1? Indah Nian
fgets(nama[i],40,stdin);
Nama 2? Elok Menawan
}
Nama 3? Cantik Memukau
for (i=0; i<N; i++)
Indah Nian
printf("%s", nama[i]);
Elok Menawan
return 0;
Cantik Memukau
}
Latihan 1
• Buatlah dua fungsi untuk menyalin
sebagian karakter dari suatu string
– Salin_kiri(): mengambil n karakter pertama
dari string.
– Salin_kanan(): mengambil n karakter
terakhir dari string.
Latihan 2
Buat program membaca beberapa baris data, dimana tiap
baris terdiri dari dua bagian: yaitu usia (integer, kolom 1-2),
dan nama (string, kolom 3-40).
Masukkan tiap field tersebut ke dalam dua variabel array,
yaitu usia dan nama. Gunakan fungsi atoi(s) untuk
mengubah string ke integer. Output program adalah daftar
nama dan diakhiri dengan rata-rata usia.
Contoh input Contoh output
2 Indah Nian
26Indah Nian Eloklah
24Eloklah 25.00

Anda mungkin juga menyukai