以下のプログラムを見てください。
char filename[20];
gets(filename);
if((fp = fopen(filename, "r") == NULL)
{
--------
--------
}
もうひとつはこれです。
char filename[20];
scanf("%s", filename);
if((fp = fopen(filename, "r") == NULL)
{
--------
--------
}
上では実行できましたが、下ではダメでした。
なにか初歩的なミスをしてるようなんですが、わかりません。
教えていただきたいのですが。
No.2ベストアンサー
- 回答日時:
#include <stdio.h>
main(){
char filename[20];
gets(filename);
printf("[%s]\n",filename);
scanf("%s", filename);
printf("[%s]\n",filename);
}
------------------------------------------------------------
というプログラムを実行してみれば,動作の違いはわかるはずです.
エラーが起きて,原因がよくわからなかったら,
プリント文を埋め込むなりして,
よく確認しましょう.
No.4
- 回答日時:
scanfを実行毎にfflush(stdin)を実行することで解決しませんか?
yokoyariさんのいわれてるようにscanfでは読みとった部分以外の
ところが蓄積されてしまうため、それを初期化するのが
fflushです。なんにしてもgetsはなんでもかんでも
上書きしやがる凶悪な奴なの私は嫌いです。。
No.3
- 回答日時:
scanfでfilenameを読み込ませる前に
別のscanfで何か読み込ませていませんか?
scanfは[Enter]のキーコードが次のscanfに持ち越される
性質を持っていますので…
私は一時期↑でドツボにはまっていた事がありまして…
もし、はずしていたらすいません。
No.1
- 回答日時:
どんなファイル名を入力した、とか、どういうふうに駄目だった、とかが書かれて
いないので、回答も占いのよう(当たるも八卦…)なものしかできません。
ありそうなところとして、空白を含むファイル名を入力した、というのが思いつきます。
scanf() は、空白やタブで項目を区切ってしまうから、期待通りの文字列が filename に
入っていなかった、というところでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- Visual Basic(VBA) エクセルの数式で教えてください。 1 2023/07/31 15:49
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
- Visual Basic(VBA) 集めたシートのシート名を変更したい。 下記のコードでサブフォルダにあるファイルのSheet3を集めて 6 2022/08/23 10:38
- C言語・C++・C# C言語のファイル入力が分かりません 2 2022/05/22 06:35
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Pythonって何のソフトで動くん...
-
エクセルVBA、ステップモードと...
-
VB.NETでボタンのクリックイベ...
-
パソコンに何かが勝手にダウン...
-
Excel実行時エラー-2146959355?
-
EXCEL-VBAでコマンド...
-
VB.NETでDataTableにデータ追加...
-
VBA 作成中のプログラムを使っ...
-
eclipseで、「ポート番号が使用...
-
パソコンのスクリーンセーバー...
-
latexでのエラー
-
VBA中断モードの解除
-
バッチファイル DOS Windows200...
-
ランタイム関数とは何ですか?
-
VBA コントロールパネルの機能...
-
PC版のMinecraftが応答なしにな...
-
ペンタブがパソコンに繋がらな...
-
長時間PCを起動しているとポッ...
-
【急いでます!】pythonでキー...
-
起動したアプリケーションを最...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パソコンに何かが勝手にダウン...
-
パソコンのスクリーンセーバー...
-
Excel実行時エラー-2146959355?
-
chatGPTで次々と質問をしていく...
-
PC版のMinecraftが応答なしにな...
-
VSコード
-
プログラミングについてです。...
-
latexでのエラー
-
VB.NETでボタンのクリックイベ...
-
管理者として実行を毎回すると...
-
エクセルVBA、ステップモードと...
-
Windows10 で青鬼を遊びたいの...
-
EXCEL-VBAでコマンド...
-
eclipseで、「ポート番号が使用...
-
プログラム実行中に強制停止さ...
-
VB.NETでDataTableにデータ追加...
-
pythonで他のアプリを操作する...
-
COBOLで集団項目から符号...
-
実行中のVBSをタスクバーに非表...
-
C言語再帰アルゴリズム
おすすめ情報