Senin, 07 November 2011
1
Senin, 07 November 2011
Nurkholish Ardi Firdaus
[C] Teknik Membaca Satu Baris String Secara Keseluruhan
Dalam bahasa C, scanf() merupakan fungsi yang bisa kita gunakan untuk meminta input dari user yang selanjutnya data input tadi akan kita olah secara lebih lanjut dalam progran kita. Data bisa berupa angka maupun karakter, kita bisa memanggil fungsi scanf() seperti ini: scanf("%s",array_char); jika kita meminta user untuk mengimput data berupa kata. Namun ketika datanya berupa kalimat yang dipisahkan oleh spasi maka scanf() hanya akan membaca 1 kata pertama sebelum spasi, sebut saja user memasukkan input kata berupa "Aku Seorang Kapiten", maka scanf() hanya akan membaca kata "Aku" sedangkan sisanya akan diabaikan. Ini sesuai konsep bahwa dalam bahasa C, whitespace (spasi) adalah penanda akhir inputan. Jadi kita terkendala dengan karakter spasinya yang oleh compiler dibaca sebagai akhir kata. Lalu bagaimana solusinya? Banyak sekali solusi yang bisa kita gunakkan, salah satunya adalah menggunakan ekspresi reguler (regular expression), sintaks pemanggilan fungsi scanf() menjadi seperti ini: scanf("%[^\n]s",array_char); arti dari panggilan fungsi scanf() ini menjadi: "Baca semua karakter kecuali \n" dimana "\n" adalah salah satu backslash character constant yang artinya adalah newline (garis baru), jadi arti keseluruhannya adalah "Baca semua karakter hingga baris baru tercipta", baris baru tercipta ketika user menekan enter yang berarti berganti baris ("\n"). Marilah kita praktikkan secara langsung lewat source code dibawah ini:
#include <stdio.h> #include <stdlib.h> int main() { char nama_lengkap[50]; scanf("%50[^n]s",nama_lengkap); printf("Nama Lengap Anda: %-50s",nama_lengkap); }Oke, sekian postingan kali ini. Semoga bermanfaat :)
1
Nurkholish Ardi Firdaus
[C] Membuat Program Segitiga
Oke, lama tidak posting. Kali ini saya akan berbagi source code yang menampilkan segitiga yang tersusun dari suatu karakter. Source code ini saya tulis dalam bahasa C. Oke cekidot...
/* UNIVERSITAS NEGERI SEMARANG NAMA: NURKHOLISH ARDI FIRDAUS NIM : 5302411244 */ #include <stdio.h> #include <stdlib.h> void prism(int line, const char *chr); int main() { printf("#################################n"); printf("## UNIVERSITAS NEGERI SEMARANG ##n"); printf("## Nurkholish Ardi Firdaus ##n"); printf("## 5302411244 ##n"); printf("## Mengambar Prisma ##n"); printf("#################################n"); prism(15,"+"); return 0; } void prism(int line, const char *chr) { if (!(line % 2 == 0)) { //lantai harus bilangan ganjil int prism_floor, draw_space, draw_char; for (prism_floor=1;prism_floor<=line;prism_floor++) { //cetak spasi sesuai dg baris (jika baris 1 maka cetak spasi (line-1) kali for (draw_space=line-1;draw_space>=prism_floor;draw_space--) printf(" "); for (draw_char=1;draw_char<=prism_floor;draw_char++) { // Jika lantai 1, cetak 2 char, lantai 2 cetak 4 char printf(chr); // cetak 2x printf(chr);} // printf("n"); //newline } } }Sebenarnya masih ada kekurangan dalam program ini, apakah anda bisa melihat apa kekurangannya?? Ya, benar. Sisi atas segitiga tidak lancip melainkan tumpul karena terdiri dari 2 karakter. Mugkin anda bisa memodifikasinya, kuncinya adalah penempatan karakter output pada terminal. Semoga bermanfaat :).
Langganan:
Postingan (Atom)