2017-06-09 10 views
1

私はMacBookを使用しています。 私はテキスト編集を使用してファイルを作成し、3と4の数字をスペースで区切って書きました。私はこのファイルを 'mydata'という名前で保存し、 'mydata.rtf'を作成しました。私はこのファイル名を 'mydata.txt'に変更しました。 私はこのファイルを開き、ファイル 'mydata.txt'の中に値を表示するためにこのプログラムを作成しました。 しかし、それは値を印刷しています:a = 446595126、b = 32767ファイルにアクセスするためのプログラムを使用できません。

誰かがこのプログラムが3と4を印刷しない理由を説明してください。 ありがとうございます。

#include<stdio.h> 

int main(void) 
{ 
     int a, b; 

     FILE *fptr1; 
     fptr1 = fopen ("mydata.txt", "r"); 
     if (fptr1 == NULL) 
     { 
       printf("FILE mydata.txt did not open\n"); 
     } 
     else 
     { 
       fscanf(fptr1,"%d%d",&a,&b); 
       printf("a = %d, b = %d\n",a,b); 
     } 

     fclose(fptr1); 
     return 0; 
} 
+1

.rtfリッチテキスト形式(データに加えて書式設定も含む)ではなくプレーンテキストをサポートするテキストエディタを使用してください。プレーンテキストファイルには書式はなく、改行とスペースのみが含まれています。 – Sampath

+1

https://www.tekrevue.com/tip/textedit-plain-text-mode/ – stefaanv

+0

あなたの問題とは関係ありません:あなたのコードは完全にCで書かれていますが、なぜC++としてタグ付けしましたか? (C++ではファイルを読み込む標準的な方法は 'std :: ifstream'を使用しています) – chtz

答えて

2

あなたのファイルはRTF (Rich Text Format)、どんなにそれが持っている拡張機能です:あなたは、単にそれを名前を変更しましたが、別の形式に変換されません。

これらの値が表示される理由は、ファイルの最初の文字が、エディタで入力した番号に対応していませんが、RTF形式の最初のバイトに対応しているためです。

解決策として、TextEditで再度ファイルを開き、プレーンテキスト形式で保存します。 this postもご覧ください。

通常、プレーンテキストファイルを作成するためにリッチフォーマット(テキストエディット、ワード、ページ)をサポートするエディタを使用しないでください。代わりに、BBEdit、TextWrangler(私はそれが廃止されたと思うが)、Emacs、Atom、vim、nanoなどのようなものを使用する。

0

2つの数字の間にスペースを入れて、 asciiの値が32 .. なので、ファイルから数値を読み取っている間に空白を入れてみてください。 これはうまくいくかもしれません:-)

関連する問題