Rumah > pembangunan bahagian belakang > Golang > Cetak rentetan yang dimasukkan pengguna n kali dalam perjalanan

Cetak rentetan yang dimasukkan pengguna n kali dalam perjalanan

WBOY
Lepaskan: 2024-02-06 08:00:07
ke hadapan
530 orang telah melayarinya

在 go 中打印用户输入的字符串 n 次

Kandungan soalan

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)
    }
}
Salin selepas log masuk

Adakah cara untuk menyelesaikan masalah ini? terima kasih.


Jawapan Betul


Lihat scanf Dokumen

Dua perkara yang paling berkaitan dengan soalan anda ialah:

  • Nilai yang diasingkan ruang
  • Baris baharu dalam input mesti sepadan dengan baris baharu dalam format

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)
}
Salin selepas log masuk

Ini akan panik dengan panik: Baris baharu yang tidak dijangka kerana mengikut spesifikasi "baris baharu dalam input mesti sepadan dengan baris baharu dalam format". Dengan mengandaikan anda ingin menekan Enter selepas setiap entri, anda boleh menggunakan 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 stdinsoalan 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)
    }
}
Salin selepas log masuk

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!

Label berkaitan:
sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan