Visual StudioとCodeBlocksの両方でWindowsでコンパイルすると動作するプログラムがありますが、QT Creatorを使用してKubuntuでコンパイルすると、fscanf関数は機能しません同じ方法。Linux環境に切り替えましたが、fscanfは動作しません
私は、他のファイルの名前を含むファイルを持っています。それぞれのファイルは、スペースと改行で区切られています。作業環境でfscanfを "%s"で使用すると、ファイル名がchar entity[21]
に読み込まれます。このテストケースでは、 "ent001.txt"を保持し、nullバイトで終了します。しかし、Linuxでは、entity [0]には "-74/182"といくつかのヌルバイトがあり、いくつかのファイルは読み込まれず、それらの文字もありません。 Fscanfは-1を返します。
移植性に深刻な問題がありますか、私の標準ライブラリは少しばかり離れていますか?
EDIT:いくつかのサンプルコードの場合: 'levelfile' が値ハード今で符号化された 'のchar *のlevelfile [21]' である
fin = fopen(levelfile, "r") ;
test = fscanf(fin, "%s", entity) ;
。テストは戻り値を見つけるための 'int'です。 'fin'はnullに等しくありません。
EDIT2:レベルファイルのXXDから出力:
データファイルが作成されますでした0000000: 656e 7430 3031 2e74 7874 200a 656e 7430 ent001.txt .ent0
0000010: 3032 2e74 7874 2024 200a 5472 6967 6765 02.txt $ .Trigge
0000020: 7230 3031 2e74 7874 2024 200a 3020 3531 r001.txt $ .0 51
0000030: 3220 3531 3220 3020 0a31 2037 3132 2037 2 512 0 .1 712 7
私は、この回答にどのように期待しているのか分かりません。 –
サンプルコードはどうですか? :) – DipSwitch
1.コードはどこですか? 2. fscanfが負の値を返す場合は、 'entity'に意味のあるものが含まれるとは限りません。キャッチしていないコード内の以前のエラー状態を確認します。 – hobbs