Saya seorang pemula dan saya hanya mahu mencetak rentetan yang dimasukkan oleh pengguna n kali, tetapi ia hanya mencetak ruang n kali. Ini kod saya
package main import ( "fmt" ) func main() { var n int var s string fmt.Scanf("%d", &n) fmt.Scanf("%s", &s) for i := 0; i < n; i++ { fmt.Printf("%s\n", s) } }
Adakah cara untuk menyelesaikan masalah ini? terima kasih.
Lihat scanf
Dokumen
Dua perkara yang paling berkaitan dengan soalan anda ialah:
Jadi jika anda menjalankan aplikasi seperti sedia ada dan taip 20 foo
并按 Enter 键,您将获得预期的输出(foo
打印 20 次)。但是,如果您输入 20
dan tekan Enter anda akan mendapat 20 baris kosong;
var n int var s string fmt.Scanf("%d", &n) _, err := fmt.Scanf("%s", &s) if err != nil { panic(err) }
fmt.Scanf("%dn", &n)
. Walau bagaimanapun, seperti yang anda nyatakan dalam ulasan anda, jika anda menggunakan fmt.Scanf("%sn", &s)
dan memasukkan rentetan yang mengandungi ruang, anda hanya akan mendapat bit pertama (kerana Gunakan ruang sebagai pemisah). panic: Unexpected newline
而出现恐慌,因为根据规范,“输入中的换行符必须与格式中的换行符匹配”。假设您希望在每次输入后按 Enter 键,则可以使用 fmt.Scanf("%dn", &n)
。但是,正如您在评论中提到的,如果您使用 fmt.Scanf("%sn", &s)
并输入包含空格的字符串,那么您只会得到第一位(因为 scanf
< /p>Jika anda ingin mendapatkan keseluruhan baris daripada
maka jawapan kepada stdin
soalan ini menyediakan beberapa pilihan seperti
func main() { var n int var s string fmt.Println("How many times? ") fmt.Scanf("%d\n", &n) fmt.Println("What to output? ") reader := bufio.NewReader(os.Stdin) s, _ = reader.ReadString('\n') for i := 0; i < n; i++ { fmt.Printf("%s", s) } }
Atas ialah kandungan terperinci Cetak rentetan yang dimasukkan pengguna n kali dalam perjalanan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!