お世話になります
テキストファイルの書き込み部分で実行してもCドライブ直下にフォルダが作成されません```ここに言語を入力
コード
#include <stdio.h> #include <stdlib.h> void main() { FILE* file; file = fopen("c:\\test\\sample.txt", "w"); if (file == NULL) { printf("ファイルが開けません。\n"); exit(1); } fprintf(file, "Hello World.\r\n"); fprintf(file, "ABCDEF\r\n"); fclose(file); }
file = fopen("c://test//sample.txt", "w");フォルダが作れないのはなぜですか?
0 票の賛成
Ryoko · レクチャー数: 64 · 21時間前
御世話になります
64.テキストファイルの書き込み部分で実行してもCドライブ直下にフォルダが作成されません
SDLチェックも”いいえ”にしています
原因は何なんでしょうか?
ちなみにWin10やWin11両方でもできません
よろしくご教授ください
どこかとマルチポストなんですかね…。
>file = fopen("c://test//sample.txt", "w");フォルダが作れないのはなぜですか?
Cドライブ直下にtestフォルダが無い状態で実行して、フォルダの作成とその中にファイルが作られない。
と言っているんですかね?
fopEn()にそんな機能はない。
となるだけかと。
> file = fopen("c:\\test\\sample.txt", "w");
cドライブ直下に「test」という名前のディレクトリは有りますか?
ありがとうございます。
fopen()→open_sにしてもダメでした・
原因がわからなく前に進めていません
jbpbo 様
ありがとうございます。
file = fopen("c:\\test\\sample.txt", "w");ここでC直下にtestというフォルダーを作っていると思いますが作れていません
また手作業で先にフォルダを作って試しましたがsample.txtファイルは作成されません
ちなみにこれはフォントもudemyサンプル通りにしております.あと考えられるのは???
> file = fopen("c:\\test\\sample.txt", "w");ここでC直下にtestというフォルダーを作っていると思いますが
作ってません
cドライブ直下に「test」という名前のディレクトリが既に有るのが前提のコードです
> 手作業で先にフォルダを作って試しましたがsample.txtファイルは作成されません
その時に、何かエラー的なものは発生してますか?
実行したらどうなるのか、詳しく質問に追記してください
(ここに書くのではなく、質問を編集して追記する)
実行直後のスクショ画像を貼るのでもいいです
> file = fopen("c:\\test\\sample.txt", "w");
と、
> file = fopen("c://test//sample.txt", "w");フォルダが作れないのはなぜですか?
で、「\\」と「//」が違いますけど、実際に実行してるコードはどちらですか?
@質問者さん
Windowsでは、C:ドライブのルートディレクトリ直下へいきなりファイルやディレクトリを作ることはできません。これはC言語の問題ではなく、Window OSのアクセス権の問題です。fopen エラー時にerrno を確認すると詳細がある程度分かります。
質問に追加されたスクショを見たら、cドライブ直下の「test」ディレクトリに「sample.txt」がありますけど、
> 手作業で先にフォルダを作って試しましたがsample.txtファイルは作成されません
の時と、スクショを作った時は、何か違うのでしょうか?
Jbpbo様
\\都//は同じと理解していました。
おかげさまで先にフォルダを作成することでsample.txtを生成して書き込むことができました
質問欄に追加でUPしました
dodox86 様
ありがとうございます。確かにerrno_tが出ました
プロパティでセキュリティーを編集したら治るかもしれませんね。
課題として調べてみます。
ただ最初にフォルダを作って実行したらsample.txtが生成され書き込みもできていました。皆様ありがとうございました
> \\都//は同じと理解していました。
普通は「\\」か「/」です
「\\」は二つ並べる必要がありますが、「/」は一つで大丈夫です
私はやったことありませんが、「//」と二つ並べても大丈夫なのですかね?
もし大丈夫でも、一つで大丈夫なものを無駄に二つ並べてるだけだと思いますよ
そういえば/だけでしたね。
勘違いしていました。しかしどちらもできました。
ありがとうございました

回答2件
あなたの回答
tips
プレビュー