質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

1回答

225閲覧

C言語 テキストへの書き込みと読み込み

BASEBALL-Y

総合スコア67

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

3クリップ

投稿2020/04/22 05:47

編集2020/04/22 05:49

#質問内容
以下のコードを実行すると,脅威であると判断されてしまいます.
ちなみに,書き込む場合と読み込む場合の両方で,このような警告が表示されます.
解決策はないでしょうか?

・テキストファイルに書き込むことは出来ます.
読み込む際に,脅威が原因で実行することが出来ません(読み込めません).

イメージ説明
##テキストへ書き込むためのコード

C

1#include "pch.h" 2#include <stdio.h> 3#include <stdlib.h> 4 5void main(void) 6{ 7 //テキストに書き込む 8 //FILEポインタを用意 9 FILE *out_file; 10 out_file = fopen("テキストファイル名", "wt"); 11 12 if (out_file == NULL) 13 { 14 printf("ファイルは存在しません!\n"); 15 16 exit(1); 17 } 18 19 //テキストに書き込む 20 fprintf(out_file, "Hello!\n"); 21 22 //ファイルを閉じる処理 23 fclose(out_file); 24}

##テキストを読み込むためのコード

C

1#include "pch.h" 2#include <stdio.h> 3#include <stdlib.h> 4 5 //読み込んだテキストを格納 6 char text; 7 8 //テキストを読み込む 9 FILE *read_file; 10 11 //ファイルをオープン 12 read_file = fopen("テキストファイル名", "rt"); 13 14 //エラー処理 15 if (read_file == NULL) 16 { 17 printf("ファイルは存在しません!\n"); 18 19 exit(1); 20 } 21 22 //テキストの読み込みと表示 23 printf("テキストファイルには以下の文字が書かれています▼\n"); 24 25 while (text = fgetc(read_file) != EOF) 26 { 27 printf("%c", text); 28 } 29 30 //ファイルを閉じる 31 fclose(read_file);

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

c

1 while (text = fgetc(read_file) != EOF)

この部分、C言語の演算子の優先順位を考えると、先に

c

1 fgetc(read_file) != EOF

が判断されて、その結果をtextに代入する、ということになり、結果として

c

1 while (text = (fgetc(read_file) != EOF))

と同じ意味になり、代入式が成立するかどうかがループ条件になります。そのため無限ループになってしまうので、危険な処理と判断されたのではないでしょうか。
なので

c

1 while ((text = fgetc(read_file)) != EOF)

としてやればいいのではないかと思います。

投稿2020/04/22 06:43

編集2020/04/22 06:45
KoichiSugiyama

総合スコア3041

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

BASEBALL-Y

2020/04/22 07:55

詳しく説明して頂き,ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問