こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

fopenの書き出しでファイル作成できません。

Microsoft Visual C++ 2010を使ってC言語の勉強をしております。
大変初歩的な内容で申し訳ないのですが、
fopenで操作モードを「書き出し」としたときにファイルが存在しない場合、新たにファイルが作成されるという認識で正しいでしょうか。
しかし、実際にプログラムを作成するとエラーが発生してしまうので、困っております。
もし役立つのであれば、ソースをご覧ください。

―――――――――――――
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
int i;
double x, y;
char fname[20];
FILE *fp;
printf("input filename : ");
scanf_s("%s", fname);
fp = fopen(fname, "w");

―――――――――――――

自分の間違いをご指摘いただけるとありがたいです。
どうかよろしくお願いいたします。

投稿日時 - 2012-08-22 20:14:27

QNo.7657809

困ってます

質問者が選んだベストアンサー

調べてみましたけど問題があるのはscanf_sの使い方みたいですよ。
以下の「解説」のところを読んでみてください。
http://msdn.microsoft.com/ja-jp/library/w40768et%28v=vs.80%29.aspx

投稿日時 - 2012-08-22 23:09:58

お礼

scanfとscanf_sとでは全てが同じであるとは限らないんですね。
よく知らずに使っておりました。
ご指摘ありがとうございます。

投稿日時 - 2012-08-22 23:27:11

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

>fopenで操作モードを「書き出し」としたときにファイルが存在しない場合、新たにファイルが作成されるという認識で正しいでしょうか。

「書き出し」というのが"w"モードの事であるなら、その認識であってます。

>しかし、実際にプログラムを作成するとエラーが発生してしまうので、困っております。

たんに「エラー」と書かれても、どんなエラーのなのかあなた以外の人にはわかりません。
こういう場合は、どんなエラーなのか書きましょう。
またメッセージが出力されているならそのメッセージをそっくりそのままを書きましょう。

投稿日時 - 2012-08-22 20:43:04

補足

申し訳ありませんでした。
.txtをつけたファイル名を入力すると、以下のようなメッセージが生じます。

Debug Assertion failed!

Line: 55

Expression: (str != NULL)

投稿日時 - 2012-08-22 20:52:52

あなたにオススメの質問