私がチェックしている出力の各フィールドは正確に何ですかls -l
?の例 この投稿私の問題を解決しました。しかし、再び各フィールドがどのタイプであるかを知りたいです。文字列は明らかです。しかし、数字はどうですか?たとえば10
、2048
は整数ですか、文字列ですか?各フィールドの種類を確認する方法はありますか?
答え1
端末のコマンドによって生成されたテキストはテキスト文字列です。テキスト表現に変換せずにターミナルで生のバイナリデータを表示すると、しばしば「誤った出力」が発生し(たとえば、cat
圧縮ファイルで実行されている場合)、場合によってはターミナルを使用できないままにすることができます。
出力の数字はls -l
テキスト文字列です。
たとえば、Cプログラムでテキストを整数として読み取るには、プログラムがそれをテキスト文字列として読み取ってから、例えば整数に変換するか、正しい書式文字列をstrtol()
使用する必要があります。scanf()
たとえば、整数を読み取るシェルツールはawk
通常、ツールで実装されている規則に従って後でこの変換を既に実行します。
注:ACプログラムは出力の数を解析しないでくださいls -l
。stat()
または から返されたファイルから呼び出す必要があります。lstat()
readdir()