Input String dengan scanf
Termasuk bagian Logika dan Alur dalam perjalanan C di Coddy. Pelajaran 14 dari 63.
Sekarang setelah kamu memahami cara kerja string dengan terminator null, saatnya mempelajari cara menerima input string dari pengguna. Fungsi scanf dapat membaca string menggunakan penentu format %s, tetapi fungsi ini memiliki batasan penting yang perlu kamu pahami.
Untuk membaca string dengan scanf, gunakan format %s dan berikan nama array karakter kamu (tanpa operator &, karena nama array sudah berupa alamat):
char word[50];
printf("Enter a word: ");
scanf("%s", word);
printf("You entered: %s\n", word);Namun, scanf("%s", ...) memiliki batasan penting: fungsi ini berhenti membaca segera setelah menemukan karakter spasi kosong (spasi, tab, atau baris baru). Artinya, jika pengguna mengetik "Hello World", scanf hanya akan menangkap "Hello" dan membiarkan "World" di buffer input.
Masalah serius lainnya adalah scanf tidak memeriksa apakah input muat di array-mu. Jika seseorang memasukkan kata yang lebih panjang daripada kapasitas array-mu, hal itu akan menyebabkan buffer overflow, yang berpotensi membuat programmu crash atau menimbulkan celah keamanan. Selalu pastikan array karakter cukup besar untuk menampung input yang diharapkan.
Terlepas dari keterbatasan ini, scanf("%s", ...) sangat cocok untuk membaca satu kata, dan itulah yang akan kamu latih dalam tantangan berikutnya.
Tantangan
MudahTulis program C yang menunjukkan cara membaca input string dari pengguna menggunakan scanf dan menampilkannya kembali. Programmu harus:
- Mendeklarasikan array karakter bernama
usernamedengan 30 elemen untuk menyimpan input pengguna - Mendeklarasikan array karakter bernama
hobbydengan 25 elemen untuk menyimpan input lainnya - Menggunakan
printfuntuk meminta input kepada pengguna dengan pesan "Enter your username:" - Menggunakan
scanfdengan penentu format%suntuk membaca username ke dalam arrayusername - Menggunakan
printfuntuk meminta input kepada pengguna dengan pesan "Enter your hobby:" - Menggunakan
scanfdengan penentu format%suntuk membaca hobby ke dalam arrayhobby - Mencetak kedua string menggunakan
printfdengan format persis seperti yang ditunjukkan di bawah ini
Input akan diberikan sebagai dua kata tunggal yang terpisah, tanpa spasi di dalam setiap kata.
Output programmu harus menampilkan hasil dalam format berikut:
Enter your username:
Enter your hobby:
Hello [username], your hobby is [hobby]!Misalnya, jika pengguna memasukkan "Alice" sebagai username dan "reading" sebagai hobby, outputnya harus seperti berikut:
Enter your username:
Enter your hobby:
Hello Alice, your hobby is reading!Tantangan ini menguji pemahamanmu tentang penggunaan scanf dengan penentu format %s untuk membaca input string, deklarasi array karakter dengan ukuran yang cukup, serta penggabungan input pengguna dengan output berformat menggunakan printf.
Coba sendiri
#include <stdio.h>
int main() {
// TODO: Deklarasikan array karakter kamu di sini
// TODO: Tulis kodemu di sini untuk menampilkan permintaan dan membaca input
// TODO: Tampilkan pesan output akhir
return 0;
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Dasar-Dasar Pointer
Apa Itu Pointer?Mendeklarasikan PointerOperator Address-Of (&)Operator Dereference (*)Pointer NULLRekap: Dasar-Dasar Pointer4Proyek: Utilitas Teks Sederhana
Gambaran Umum ProyekMenghitung Karakter2Pointer dan array
Nama array sebagai pointerElemen array dan pointerAritmetika pointerMembandingkan pointerRangkuman: Menelusuri array dengan pointer5Pointer dan Fungsi
Penerusan dengan NilaiMeneruskan Pointer ke FungsiMengubah Variabel melalui PointerContoh Klasik: SwapMeneruskan Array ke FungsiRingkasan: Argumen Pointer Fungsi8Struct dan Pointer
Pointer ke StructOperator Panah (->)Mengirim Struct berdasarkan NilaiMengirim Pointer StructAlokasi Dinamis StructUlasan: Memodifikasi Struct dengan Pointer11Tantangan Rangkuman Akhir
Rangkuman: Penggabungan string DinamisRangkuman: array berisi structRangkuman: Penghitung Frekuensi Kata3Array char dan String
String sebagai array charPenanda akhir nullInput String dengan scanfMenggunakan strlen()Menggunakan strcpy()Menggunakan strcat()Menggunakan strcmp()Ulasan: Fungsi String DasarLatihan sendiri: Compiler C online