#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:
終わり
と表示されていて原因がわかりません。どなたか教えてくれませんか?
fscanf
- Dixq (管理人)
- 管理人
- 記事: 1662
- 登録日時: 15年前
- 住所: 北海道札幌市
- 連絡を取る:
Re: fscanf
ご自分が行いたいこととの違いは何ですか?
どう表示されることを期待しているのでしょうか?
test.txtの内容は何ですか?
また、いくつか指摘を・・。
(1)
コードを投稿する時は上にある注意事項の通りcodeタグを使ってください (2)
if文の中はちゃんと改行しましょう。
(3)
char memo[20]={};
と書けばfor文の0クリア処理が不要になります。
また、NULLの代入は間違いです。0を代入しましょう。
NULLはポインタに代入する物です。
(4)
_sの付いているマイクロソフト独自の関数を使うのはいいですが、使うのか使わないのかどっちかにしましょう。
個人的には使わない方に統一する方が望ましいと思います。
(5)
今のままではtest.txtの内容によっては危険なコードです。
メモリ確保の仕方が[20]でいいのか再考しましょう。
(6)
TESTは定義値じゃないので小文字にしましょう。
どう表示されることを期待しているのでしょうか?
test.txtの内容は何ですか?
また、いくつか指摘を・・。
(1)
コードを投稿する時は上にある注意事項の通りcodeタグを使ってください (2)
if文の中はちゃんと改行しましょう。
(3)
char memo[20]={};
と書けばfor文の0クリア処理が不要になります。
また、NULLの代入は間違いです。0を代入しましょう。
NULLはポインタに代入する物です。
(4)
_sの付いているマイクロソフト独自の関数を使うのはいいですが、使うのか使わないのかどっちかにしましょう。
個人的には使わない方に統一する方が望ましいと思います。
(5)
今のままではtest.txtの内容によっては危険なコードです。
メモリ確保の仕方が[20]でいいのか再考しましょう。
(6)
TESTは定義値じゃないので小文字にしましょう。