Analisis soalan lazim tentang format input scanf bahasa C
Dalam proses pengaturcaraan dalam bahasa C, fungsi input adalah sangat penting untuk perjalanan program. Kami sering menggunakan fungsi scanf untuk menerima input pengguna. Walau bagaimanapun, disebabkan kepelbagaian dan kerumitan input, beberapa masalah biasa mungkin timbul apabila menggunakan fungsi scanf. Artikel ini akan menganalisis beberapa isu format input scanf biasa dan memberikan contoh kod khusus.
#include <stdio.h> int main() { int num; printf("请输入一个整数:"); scanf("%d", &num); printf("您输入的整数是:%d ", num); return 0; }
Apabila pengguna memasukkan aksara bukan angka, atur cara tidak akan dapat membaca input pengguna dengan betul, mengakibatkan hasil output yang salah. Untuk menyelesaikan masalah ini, kita boleh menggunakan gelung dan pernyataan bersyarat untuk mengendalikan input yang salah.
#include <stdio.h> int main() { int num; printf("请输入一个整数:"); while (scanf("%d", &num) != 1) { printf("输入错误,请重新输入:"); while (getchar() != ' '); } printf("您输入的整数是:%d ", num); return 0; }
Dalam contoh ini, kami menentukan sama ada format input adalah betul dengan menyemak nilai yang dikembalikan oleh fungsi scanf. Jika salah, kami menggunakan gelung sementara untuk mengosongkan penimbal input daripada aksara haram dan menggesa semula pengguna untuk input.
#include <stdio.h> int main() { int num1, num2; printf("请输入两个整数,用空格分隔:"); scanf("%d%d", &num1, &num2); printf("您输入的两个整数是:%d和%d ", num1, num2); return 0; }
Untuk menyelesaikan masalah ini, kita boleh menambah ruang pada rentetan format untuk melangkau ruang hadapan dan belakang serta baris baharu.
#include <stdio.h> int main() { int num1, num2; printf("请输入两个整数,用空格分隔:"); scanf(" %d%d", &num1, &num2); printf("您输入的两个整数是:%d和%d ", num1, num2); return 0; }
Dalam contoh ini, kami menambah ruang di hadapan "%d" supaya fungsi scanf akan melangkau ruang sebelumnya atau aksara baris baharu.
#include <stdio.h> int main() { int num; char ch; printf("请输入一个整数和一个字符:"); scanf("%d", &num); scanf("%c", &ch); printf("您输入的整数是:%d ", num); printf("您输入的字符是:%c ", ch); return 0; }
Apabila kita menjalankan program ini dan memasukkan integer dan aksara, kita akan mendapati bahawa atur cara itu tamat secara langsung tanpa menunggu kita memasukkan watak tersebut. Ini kerana selepas memasukkan integer, masih terdapat aksara baris baharu dalam penimbal input yang belum diekstrak, menyebabkan fungsi scanf kedua menggunakan terus aksara baris baharu dengan panjang 1. Untuk mengelakkan ini, kita boleh menambah %c dengan ruang untuk melangkau baris baharu dalam penimbal input.
#include <stdio.h> int main() { int num; char ch; printf("请输入一个整数和一个字符:"); scanf("%d", &num); scanf(" %c", &ch); printf("您输入的整数是:%d ", num); printf("您输入的字符是:%c ", ch); return 0; }
Dalam contoh ini, kami menambah ruang sebelum "%c" pada rentetan format supaya fungsi scanf akan melangkau baris baharu dalam penimbal input.
Melalui analisis dan contoh kod di atas, kami boleh lebih memahami masalah biasa format input scanf bahasa C, dan belajar menangani masalah ini dengan munasabah untuk meningkatkan keteguhan dan pengalaman pengguna program. Dalam pengaturcaraan sebenar, kami juga perlu melaraskan kod mengikut keperluan khusus dan senario input untuk memastikan input pengguna dibaca dengan betul.
Atas ialah kandungan terperinci Menganalisis isu format input biasa bagi fungsi scanf bahasa C. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!