ページ 11

fscanf

Posted: 2017年7月10日(月) 09:34
by rouse
#include"stdafx.h"

int main() {

FILE *TEST;
char memo[20];

for (int i = 0; i <= 19; i++)memo = NULL;

if (fopen_s(&TEST, "test.txt", "r") != 0) { printf("ファイルを開けなかった\n"); return 0; }

printf("ファイルの読み込み\n");
fscanf(TEST,"%s",memo);
printf("読み込んだ文字を表示\n");
printf("memo:%s\n", memo);
printf("終わり\n");
fclose(TEST);

return 0;
}


上記のようなプログラムを書いたのですが

ファイルの読み込み
読み込んだ文字を表示
memo:
終わり

と表示されていて原因がわかりません。どなたか教えてくれませんか?

Re: fscanf

Posted: 2017年7月10日(月) 21:15
by Dixq (管理人)
ご自分が行いたいこととの違いは何ですか?
どう表示されることを期待しているのでしょうか?
test.txtの内容は何ですか?

また、いくつか指摘を・・。

(1)
コードを投稿する時は上にある注意事項の通りcodeタグを使ってください
warning.png
warning.png (4.12 KiB) 閲覧数: 1408 回
(2)
if文の中はちゃんと改行しましょう。

(3)
char memo[20]={};
と書けばfor文の0クリア処理が不要になります。
また、NULLの代入は間違いです。0を代入しましょう。
NULLはポインタに代入する物です。

(4)
_sの付いているマイクロソフト独自の関数を使うのはいいですが、使うのか使わないのかどっちかにしましょう。
個人的には使わない方に統一する方が望ましいと思います。

(5)
今のままではtest.txtの内容によっては危険なコードです。
メモリ確保の仕方が[20]でいいのか再考しましょう。

(6)
TESTは定義値じゃないので小文字にしましょう。