2017-03-19 31 views
0

私はこのプログラムを使用して、単一のリンクリストを作成し、リストの要素を出力しています。私のMacで動作しますが、同じプログラムをWindows 7で試してみると、期待通りに動作しません。誰かがここで何が問題であるかを特定できますか?プログラムがWIndows 7で動作しない

// Create a single linked list and display elements of list 
package main 

import "fmt" 

// Node structure 
type Node struct { 
    Value int 
    Next *Node 
} 

func main() { 
    var value int 
    var head, current *Node 

    // Create linked list 
    for i := 0; i <= 5; i++ { 
     fmt.Print("Plase enter a number: ") 
     fmt.Scanf("%d", &value) 

     var newNode = &Node{value, nil} 
     if head != nil { 
      current.Next = newNode 
     } else { 
      head = newNode 
     } 
     current = newNode 
    } 

    // Print elements of linked list 
    for node := head; node != nil; node = node.Next { 
     fmt.Printf("%d ", node.Value) 
    } 
} 

出力異なり、UNIXの改行より

E:\go > go run linked_list.go 
Please enter a number: 10 
Please enter a number: Please enter a number: 20 
Please enter a number: Please enter a number: 30 
Please enter a number: 10 20 20 30 30 30 

答えて

2

Scanfは、Windowsの改行(\r\n)を扱っているように見えます(\n)。私はこれが古いバージョンのGoのバグだと思う。どのバージョンを実行していますか? 1.7以降をお試しください。

回避策として、fmt.Scanf("%d\n", &value)を明示的に改行文字を入力してみてください。

+0

ありがとう@Mahler5ive –

関連する問題