>  기사  >  백엔드 개발  >  Windows에서 Go의 두 번째 입력에서 Scanf가 실패하는 이유는 무엇입니까?

Windows에서 Go의 두 번째 입력에서 Scanf가 실패하는 이유는 무엇입니까?

DDD
DDD원래의
2024-10-26 11:14:29558검색

Why Does Scanf Fail on Second Input in Go on Windows?

Windows의 GOLang에서 Scanf 사용 시 오류

GOLang의 Scanf 함수는 사용자 입력을 두 번 얻으려고 시도할 때 문제가 발생할 수 있습니다. 첫 번째 입력은 성공적으로 검색되지만 Windows 시스템에서 두 번째 시도 중에 함수가 갑자기 종료됩니다. 이 동작은 macOS에서는 발생하지 않습니다.

<code class="go">func credentials() (string, string) {

    var username string
    var password string

    fmt.Print("Enter Username: ")
    fmt.Scanf("%s", &username)

    fmt.Print("Enter Password: ")
    fmt.Scanf("%s", &password)

    return username, password
}</code>

해결 방법:

Scanf는 공백을 구분 기호로 사용하는 방식이 독특하여 사용하기가 다소 어렵습니다. Bufio는 프로세스를 단순화하는 뛰어난 대안을 제공합니다.

<code class="go">func credentials() (string, string) {
    reader := bufio.NewReader(os.Stdin)

    fmt.Print("Enter Username: ")
    username, _ := reader.ReadString('\n')

    fmt.Print("Enter Password: ")
    password, _ := reader.ReadString('\n')

    return strings.TrimSpace(username), strings.TrimSpace(password) // Remove trailing newline character
}</code>

이 수정된 코드는 문제를 해결하고 Windows와 macOS 모두에서 원활하게 작동합니다.

위 내용은 Windows에서 Go의 두 번째 입력에서 Scanf가 실패하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.