2016-08-23 8 views
2

os.Stdinから長いテキストを読んでみたいが、それを実現できない。すでに対象のすべてを読んで、動作するはずのコードを試しました。どんな方法でも、すべての方法は4096文字の後に切り詰められます。golangがstdinから長いテキストを読む

例: hereの実例です。ループの最初の実行の後、最初の4096文字を読み込み、EOF(Ctrl + D)で終了するまで、それぞれの入力を処理するのを待ちます。 fmt.Scan、bufio.NewScanner、bufio ReadLine、ioutil.ReadAllも同様です。ファイルに保存して読み込むと、期待どおりに動作します。 stdinからはありません。

私は、Arch Linux、32ビット、Go 1.7で動作しています。相手端末1.14、tty 8.25でテストしましたが、どちらも同じです。そして同じことがhackerrank.comのページで起こりますが、私はどの技術を使っているのか分かりません。

助けてください!

EDIT:

私の入力が少し長い4096文字を超えています。 Amdが共有しているリンクをチェックしたところ、次のようになりました。私の入力はスペースで区切られた整数を含む1行だけです。スペースを改行に変更したとき、それはうまくいった。しかし、ハッカーレートでのエクササイズ形式では長いスペースで区切られた行が使用されるため、問題はまだ改善されています。

+0

入力テキストのバイトサイズはどのくらいですか?あなたは一度に、あるいは長い間、すべてのテキストを入力していますか? hackerrankではその質問へのリンクを提供します。参照:http://stackoverflow.com/questions/31333353/faster-input-scanning –

答えて

1

私はイアン・ランス・テイラーに、このおかげで解決することができた。だから、4096個の文字を https://groups.google.com/forum/#!topic/golang-nuts/ndh-1wdsWYs

はN_TTY_BUF_SIZEカーネルパラメータを使用して私のシステムの制限です。同じことがcatやPythonでもうまくいきました。

とにかく、私はPythonで同じ演習を解決することができたので、彼らはGoの設定が間違っていると思っています。

関連する問題