4

現在、次のコードを使用して、標準入力から最初の文字を読み取ります(プロンプトの後)。

NSFileHandle *stdIn = [NSFileHandle fileHandleWithStandardInput];
    NSString* input = [[NSString alloc]
        initWithData:[stdIn readDataOfLength:1]
        encoding:NSUTF8StringEncoding];

ただし、プログラムの完了後、余分な文字はすべてコマンドライン(この場合はbash)によって解釈されます。たとえば、プロンプトは

File already exists, do you want to overwrite it? [y/N]

入力するnooooooと、bashは-bash: oooooo: command not foundプログラムの終了後に言います。これを回避するにはどうすればよいですか?予想通り、使用[stdIn readDataToEndOfFile]は機能しません。

を使用することはできます[stdIn readToEndOfFileInBackgroundAndNotify]が、そのようなプロンプトからユーザー入力を再度取得する必要がある場合、それは不可能です。

4

2 に答える 2

4

scanf を使用していない特別な理由はありますか?

その方法と、scanf の C の側面を Obj-C と統合する方法についての簡単なガイドについては、NSStrings での scanf の使用を参照してください。

于 2012-11-27T00:07:08.857 に答える