Analisis mendalam fungsi scanf dan parameternya dalam bahasa C
Dalam bahasa C, fungsi scanf ialah fungsi yang digunakan untuk memasukkan data Ia membolehkan pengguna membaca data daripada peranti input standard (biasanya papan kekunci) dan Simpannya dalam pembolehubah yang ditentukan. Artikel ini akan menyediakan analisis mendalam tentang fungsi scanf dan parameternya, dan membantu pembaca memahami dan menguasai penggunaannya melalui contoh kod tertentu.
Penggunaan asas fungsi scanf adalah seperti berikut:
int scanf(const char *format, ...);
Fungsi scanf menerima rentetan format sebagai parameter, yang menentukan format data input, dan kemudian membaca ia daripada data peranti input standard dan simpannya dalam pembolehubah yang sepadan mengikut format. Nilai pulangan fungsi scanf ialah bilangan pembolehubah yang berjaya membaca data. Sebagai contoh, jika data 3 pembolehubah berjaya dibaca, nilai pulangan ialah 3.
Berikut ialah contoh kod ringkas yang menunjukkan cara menggunakan fungsi scanf untuk membaca dua integer dan menjumlahkannya:
#include <stdio.h> int main() { int num1, num2, sum; printf("请输入两个整数:"); scanf("%d%d", &num1, &num2); sum = num1 + num2; printf("两个整数的和为:%d ", sum); return 0; }
Dalam kod di atas, rentetan format "%d%d" fungsi scanf menentukan dua format Input untuk integer. Dapatkan alamat num1 dan num2 melalui operator &
dan hantarkannya ke fungsi scanf sebagai parameter untuk menyimpan integer input ke dalam dua pembolehubah ini. &
运算符获取num1和num2的地址作为参数传递给scanf函数,从而将输入的整数保存到这两个变量中。
需要注意的是,scanf函数的格式化字符串中的格式控制符(如%d、%f、%c等)必须与待读取的变量类型匹配,否则会导致数据读取错误。
scanf函数的参数可以是多个,每个参数都对应一个被读取的变量。下面是几个常用的参数用法:
%d
:读取一个整数并存储到int类型变量中。%f
:读取一个浮点数并存储到float类型变量中。%c
:读取一个字符并存储到char类型变量中。%s
:读取一个字符串(不包含空白字符)并存储到字符数组中。以下是一些示例代码,演示了scanf函数参数的具体用法:
#include <stdio.h> int main() { int num; float realNum; char ch; char str[20]; printf("请输入一个整数和一个浮点数:"); scanf("%d%f", &num, &realNum); printf("整数:%d,浮点数:%f ", num, realNum); printf("请输入一个字符:"); scanf(" %c", &ch); printf("字符:%c ", ch); printf("请输入一个字符串(不包含空白字符):"); scanf("%s", str); printf("字符串:%s ", str); return 0; }
在第一个示例代码中,使用了%d
和%f
两个格式控制符,分别读取一个整数和一个浮点数。需要注意的是,这两个格式控制符中间没有空格分隔,这是因为scanf函数在遇到换行符或空白字符时会自动终止输入,所以可以连续读取多个变量。
在第二个示例代码中,由于C语言中字符数组(字符串)不能直接进行输入输出,所以需要使用%c
格式控制符读取单个字符。需要注意的是,在%c之前加上一个空格,以防止读取到上一个scanf函数留下的换行符。
最后一个示例代码演示了如何读取一个字符串,并将其存储到字符数组中。由于字符数组本身就是一个指针,所以在scanf函数中不需要使用&
%d
: Baca integer dan simpannya dalam pembolehubah jenis int. 🎜🎜%f
: Baca nombor titik terapung dan simpannya dalam pembolehubah jenis apungan. 🎜🎜%c
: Baca aksara dan simpannya dalam pembolehubah jenis aksara. 🎜🎜%s
: Baca rentetan (tidak termasuk aksara ruang putih) dan simpannya ke dalam tatasusunan aksara. 🎜%d
dan %fDua aksara kawalan format, masing-masing membaca integer dan nombor titik terapung. Perlu diingatkan bahawa tiada pemisahan ruang antara kedua-dua aksara kawalan format ini kerana fungsi scanf secara automatik menamatkan input apabila menemui aksara baris baharu atau aksara ruang putih, jadi berbilang pembolehubah boleh dibaca secara berterusan. 🎜🎜Dalam kod sampel kedua, memandangkan tatasusunan aksara (rentetan) dalam bahasa C tidak boleh dimasukkan dan dikeluarkan secara langsung, anda perlu menggunakan aksara kawalan format <code>%c
untuk membaca satu aksara. Perlu diingat bahawa ruang ditambah sebelum %c untuk menghalang aksara baris baharu yang ditinggalkan oleh fungsi scanf sebelumnya daripada dibaca. 🎜🎜Kod contoh terakhir menunjukkan cara membaca rentetan dan menyimpannya ke dalam tatasusunan aksara. Memandangkan tatasusunan aksara itu sendiri ialah penunjuk, tidak perlu menggunakan operator &amp;amp;
dalam fungsi scanf. Perlu diingat bahawa apabila fungsi scanf menggunakan aksara kawalan format %s untuk membaca rentetan, ia akan berhenti membaca apabila ia menemui aksara ruang putih (seperti ruang, tab, baris baharu), jadi ia hanya boleh membaca rentetan yang tidak mengandungi aksara ruang putih. 🎜Atas ialah kandungan terperinci Perbincangan mendalam tentang penggunaan dan parameter fungsi scanf bahasa C. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!