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 mendapatkan 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 begitu menemukan karakter spasi putih (spasi, tab, atau baris baru). Artinya, jika pengguna mengetik "Hello World", scanf hanya akan menangkap "Hello" dan membiarkan "World" di buffer input.
Hal 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 kerentanan keamanan. Pastikan array karakter-mu selalu cukup besar untuk 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 pesanEnter your username: - Menggunakan
scanfdengan penentu format%suntuk membaca username ke dalam arrayusername - Menggunakan
printfuntuk meminta input kepada pengguna dengan pesanEnter 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 terpisah, tanpa spasi di dalam setiap kata.
Output harus menampilkan hasil dengan 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 yang tepat dengan ukuran memadai, serta penggabungan input pengguna dengan output berformat menggunakan printf.
Coba sendiri
#include <stdio.h>
int main() {
// TODO: Deklarasikan array karakter milikmu di sini
// TODO: Tulis kodemu di sini untuk meminta dan membaca input
// TODO: Cetak 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