Belajar Pemrograman C #04: Mengenal Fungsi Input dan Output pada C
Pada dasarnya, program komputer hanya terdiri dari tiga bagian:
Input adalah sesuatu data yang kita masukan ke dalam program.
Input biasanya diambil dari perangkat inputan seperti keyboard, mouse, kamera, microphone, dll.
Proses adalah langkah-langkah yang harus dilakukan program untuk menghasilkan output.
Output adalah informasi yang dihasilkan setelah dilakukan proses. Output biasanya ditampilkan ke layar komputer.
Pada bahasa pemrograman C, terdapat beberapa fungsi dasar untuk menampilkan output dan mengambil input.
Apa saja itu?
Mari kita bahas…
Fungsi Output pada C
Ada dua macam fungsi yang bisa digunakan untuk menampilkan output:
1. Fungsi printf()
Fungsi printf()
merupakan fungsi untuk menampilkan output ke
layar komputer. Fungsi ini terdapat pada library stdio.h
.
Oleh sebab itu, ketika kita diharuskan untuk menuliskan
#include <stdio.h>
di bagian atas program agar bisa
menggunakan fungsi ini.
Berikut ini struktur dasar fungsi printf()
:
Perhatikan:
"format"
adalah sebuah teks (string) untuk ditampilkan.
Lalu tanda ...
akan berisi sebuah variabel atau nilai
untuk ditampilkan berdasarkan format yang diberikan
pada teks "format"
.
Mari kita lihat contohnya:
Buatlah sebuah program C bernama output.c
,
lalu isi dengan kode berikut.
#include <stdio.h>
int main(){
printf("Hello, ini adalah teks output\n");
printf("Nama saya %s\n", "Dian");
printf("Usia saya %d\n", 20);
return 0;
}
Hasilnya:
Ada beberapa hal yang perlu di perhatikan…
Pada fungsi printf()
kita menggunakan simbol %s
, %d
, dan \n
untuk
format teks. Simbol-simbol ini disebut format specifier.
Mari kita bahas arti dari simbol tersebut:
%s
adalah simbol untuk menampilkan nilai string;%d
adalah simbol untuk menampilkan nilai angka atau bilangan desimal;\n
adalah simbol untuk membuat baris baru.
Selain tiga simbol tersebut, masih banyak lagi simbol yang lain.
Simbol | Arti atau Fungsi |
---|---|
%c | untuk menampilkan karakter |
%s | untuk menampilkan teks (string) |
%d , %i | untuk menampilkan bilangan desimal |
%f | untuk menampilkan bilangan pecahan |
%o | untuk menampilkan bilangan oktal |
%x | untuk menampilkan bilangan heksadesimal |
\t | untuk membuat tabs |
2. Fungsi puts()
Fungsi puts()
adalah fungsi untuk menampilkan output.
Fungsi ini juga terdapat pada library stdio.h
.
Perbedaannya dengan printf()
, fungsi puts()
tidak
memerlukan format.
Fungsi puts()
akan selalu membuat baris baru.
Jadi tidak perlu menggunakan simbol \n
seperti
pada printf()
.
Contoh program: fungsi_puts.c
#include <stdio.h>
int main(){
puts("Hello World");
puts("Nama Saya Dian");
return 0;
}
Hasilnya:
Selain fungsi puts()
, terdapat juga fungsi putchar()
yang khusus
untuk menampilkan satu karakter saja.
Contoh:
#include <stdio.h>
int main(){
putchar('A');
return 0;
}
Maka akan menghasilkan output:
A
Lalu pertanyaannya:
Fungsi manakah yang harus saya pakai?
Jawabannya, tergantung…
Tergantung dari teks apa yang akan ditampilkan.
Apabila di sana kita akan menampilkan teks dan nilai atau variabel,
sebaiknya menggunakan printf()
karena bisa membuat format.
Tapi kalau teks yang biasa saja, bisa pakai puts()
.
Fungsi Input pada C
Pada bahasa C, terdapat beberapa fungsi untuk mengambil input.
Oh iya, input yang akan kita bahas di sini adalah input dari keyboard.
Input juga bisa dari file, kamera, mikrofon, dan sebagainya.
Tapi kita fokus dulu bahas yang paling mudah…
Ini adalah fungsi untuk mengambil input dari keyboard:
1. Fungsi scanf()
Fungsi scanf()
adalah fungsi untuk mengambil input dari keyboard.
Fungsi ini memiliki format seperti fungsi printf()
.
Format yang diberikan tergantung dari jenis tipe data apa yang ingin kita ambil.
Misalnya mau mengambil angka, maka kita bisa pakai %d
atau %i
.
Mari kita lihat contohnya:
#include <stdio.h>
int main () {
// membuat variabel
char name[20], web_address[30];
printf("Nama: ");
scanf("%s", &name);
printf("Alamat web: ");
scanf("%s", &web_address);
printf("\n------------------------------\n");
printf("Nama yang diinputkan: %s\n", name);
printf("Alamat Web yang diinputkan: %s\n", web_address);
return 0;
}
Hasilnya:
Tapi saat kita menginputkan teks yang mengandung spasi, hasilnya akan dipecah menjadi dua seperti ini:
Untuk mengatasi masalah ini, kita bisa ubah format yang digunakan
pada scanf()
menjadi seperti ini:
printf("Nama: ");
scanf("%[^\n]s", name);
Maka fungsi scanf()
akan menerima spasi.
Dalam menggunakan scanf()
, kita dianjurkan menggunakan
simbol &
sebelum nama variabel.
Contoh:
#include <stdio.h>
void main(){
int a, b, c;
printf("Inputkan nilai a: ");
scanf("%i", &a);
printf("Inputkan nilai b: ");
scanf("%i", &b);
c = a + b;
printf("Hasil a + b: %i", c);
}
Simbol &
berfungsi untuk mengambil alamat memori
dari sebuah variabel.
Fungsi scanf()
membutuhkan tempat untuk menyimpan
nilai yang akan diinputkan.
Karena itu kita memberikan simbol &
di depan
nama variabel untuk menentukan alamat memori
yang akan digunakan oleh scanf()
.
Nanti ini akan kita bahas lagi pada Pointer.
2. Fungsi gets()
Fungsi gets()
adalah fungsi untuk mengambil input
dalam satu baris. Fungsi gets()
tidak memerlukan
format seperti scanf()
.
Contoh:
#include <stdio.h>
int main () {
char name[50], web_address[50];
printf("Nama: ");
gets(name);
printf("Alamat web: ");
gets(web_address);
printf("You entered: %s\n", name);
printf("Web address: %s\n", web_address);
return(0);
}
Hasilnya:
Saat melakukan kompilasi, kita akan mendapatkan peringatan:
warning: the `gets' function is dangerous and should not be used.
Ini bukan error, melainkan hanya peringatan saja agar tidak
menggunakan fungsi gets()
.
Mengapa?
Karena dapat menyebabkan masalah buffer overflow pada program. 1
Lalu bagaimana solusinya?
Kita bisa menggunakan:
3. Fungsi fgets()
Fungsi fgets()
lebih aman dibandingkan gets()
,
karena kita bisa menentukan ukuran buffer dan sumber inputan.
Ukuran buffer adalah batas ukuran panjang string yang diinputkan.
Lalu stdin
adalah sumber inputan dari keyboard.
Kita juga bisa mengambil input dari file dengan fgets()
dengan memasukkan pointer FILE
pada stdin
.
Untuk lebih jelasnya, mari kita lihat contohnya:
#include <stdio.h>
int main(){
char name[50], email[50];
printf("Nama: ");
fgets(name, sizeof(name), stdin);
printf("Email: ");
fgets(email, sizeof(email), stdin);
printf("\n-------------------------\n");
printf("Nama anda: %s", name);
printf("Alamat email: %s", email);
return 0;
}
Hasilnya:
Pada contoh program di atas, kita menggunakan fungsi sizeof()
untuk mengambil ukuran buffer dari variabel.
Ukuran ini akan menjadi batas maksimum dari inputan.
Apa Selanjutnya?
Kita sudah mempelajari fungsi input dan output pada C. Ada banyak pilihan fungsi untuk melakukan input dan output.
Gunakanlah fungsi sesuai kebutuhan.
Oh iya, untuk fungsi gets()
tidak disarankan karena
dapat menimbulkan masalah buffer overflow.
Sebaiknya gunakan fgets()
saja.
Selanjutnya silakan pelajari tentang:
- Belajar C #05: Variabel dan Tipe data Pada C
- Belajar C #06: Operator pada C
- Belajar C #07: Blok Percabangan pada C
- Belajar C #08: Blok Perulangan pada C
- Belajar C #09: Mengenal Array pada C
- Belajar C #10: Mengenal Pointer pada C
- Belajar C #11: Mengenal Fungsi pada C
Selamat belajar…