fscanf

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
rouse

fscanf

#1

投稿記事 by rouse » 8年前

#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:
終わり

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

アバター
Dixq (管理人)
管理人
記事: 1662
登録日時: 15年前
住所: 北海道札幌市
連絡を取る:

Re: fscanf

#2

投稿記事 by Dixq (管理人) » 8年前

ご自分が行いたいこととの違いは何ですか?
どう表示されることを期待しているのでしょうか?
test.txtの内容は何ですか?

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

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

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

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

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

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

返信

“C言語何でも質問掲示板” へ戻る