- ベストアンサー
fopen.cの中身について
いつもお世話になっています。 VS2005でWindowsアプリケーション作成を行っています。 ただいまファイル操作を行っているのですが、あるファイルを読み込みモードでfopenしようとする時点でアプリが中断されてしまい、fopen.cファイルが表示され下記のソースにチャックがされます。 if(*file==_T('\0')) { errno=EINVAL; return NULL; } このソースコードはどういう意味のものなのでしょうか。 エラー解決のため、ご教授お願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (2)
- cyacya2000
- ベストアンサー率54% (39/71)
- Wr5
- ベストアンサー率53% (2177/4070)
関連するQ&A
- C言語 fopen
初心者の質問になります。現在ファイルがオープンできるかどうかを確認したいのですが、指定したディレクトリの中のファイルを指定しているのですが、オープンできませんという結果が返ってきます。同じ場所にファイルを置いてファイル名だけでしていするとオープンが出来ます。 何卒よろしくおねがいします。 #define _CRT_SECURE_NO_WARNINGS #include <stdio.h> int main(void) { FILE *fp; char *filename = "/file/d20151001.csv"; fp = fopen(filename,"r"); if (fp == NULL) { printf("\aファイルをオープンできません\n"); } else { printf("ファイルがオープンできました\n"); fclose(fp); } return (0); } ディレクトリ(わかりにくくてすいません汗) file------d20151001.csv data.c 環境 VisualStudio
- ベストアンサー
- C・C++・C#
- fopenのコード
初歩的なことですがファイルをオープンするfopenの例題で *************************** #include<stdio.h> int main (void) { FILE *fp; fp = fopen ("test1.txt","w"); if (fp==NULL) { printf ("ファイルをオープンできませんでした。\n"); return 1; } else { printf ("ファイルをオープンしました。\n"); } fclose (fp); printf ("ファイルをクローズしました。\n"); return 0; } *********************************というのがあります。 この中のif文の中のreturnの戻り値が1なのはなぜでしょうか? (例題によっては-1というのもありましたが・・。) またどこに戻り値を返すのでしょうか? もしファイルがオープンできなければその時点で終了になるのでしょうか?初歩的なところですがお願いします。
- ベストアンサー
- C・C++・C#
- fopenでのパス指定
毎度お世話になります。 ただ今VS2005でWindowsアプリケーションの実装を行っています。 fopenでパス指定をしてファイルを開くとき、 fopen("C:\\Test\\data.txt", w); としますが、GetModuleFileNameで取得したパス↓ GetModuleFileName(NULL, szPath, sizeof(szPath)); を使用したいとき、単に fopen(szPath, w); ではできません。これはszPathの中身が C:\Test\data.txt となっているためにfopenでは開けないんだと思うのですが、 わざわざszPathの文字を1文字づつ見ていって、 "\"があったときに"\"を付け足す… という作業をしなければならないのでしょうか。 他に解決策があるのでしょうか。 ご教授お願いします。
- ベストアンサー
- C・C++・C#
- fopen関数について
----------------------------------------- #include<stdio.h> #include<stdlib.h> int main() { FILE *fp; char filename[80],ss[256]; printf("ファイル名="); gets(filename); if((fp=fopen(filename,"r"))==NULL){ printf("ファイルをオープンできません.\n"); exit(1); } while(fgets(ss,256,fp)!=NULL){ printf("%s",ss); } puts(""); fclose(fp); return 0; } ----------------------------------------- 初心者な内容の質問ですいません。 以上のプログラムでまず、「gets(filename);」により、「filename[80]」の配列に「aaa.txt」という文字列を格納し、そのファイルをfopenで読もう込もうとしています。 そこで、 if((fp=fopen(filename,"r"))==NULL) の部分に疑問があるのですが、「filename」という配列名だけで中身の「aaa.txt」と何故認識できるのでしょうか? 配列名ということで、先頭アドレスのみの情報しかないと思いました。 教えていただければ嬉しいです。
- ベストアンサー
- C・C++・C#
- ファイルをドロップするとfopenからファイルが作成できません
C言語でコンソールアプリケーションを作っています。 ファイルをexeにドロップして実行し、別のファイルに結果を出力させたいのですが、出力ファイルが作成されません。 どのようにすればよろしいのでしょうか。 コンソールから渡すときはファイルが作成されます。 コンパイラはBorland C++ Compiler 5.5を使用しています。 以下にコードの一部を掲載します。 int main(int argc, char *argv[]) { char filename[256]; FILE *inputFile; FILE *outputFile; int i; for(i=1; i<argc; i++) { if((inputFile=fopen(filename,"r")) == NULL) {/*エラー処理*/} sprintf(filename,"result%d.txt",i); // 出力ファイル名 if((outputFile=fopen(filename,"w")) == NULL) {/*エラー処理*/} for(;;) { char ss[1024]; if(fgets(ss,1024,inputFile) ==NULL) break; fputs(ss,outputFile); } fclose(inputFile); fclose(outputFile); } return 0; }
- ベストアンサー
- C・C++・C#
- C言語
C言語で簡単なプログラムを作っているのですが、 「テキストファイルが存在し、かつ空のテキストファイル(開いても何も書かれていない)だと、そのテキストファイルを削除する」 というコードはどうのように書けばいいのでしょうか? 現在自分が考えているのは、 #include<stdio.h> int main(){ FILE *fp; if((fp=fopen("example.txt","r"))==NULL){ printf("file not open\n"); }else if(((fp=fopen("example.txt","r"))!=NULL)&&(fgetc(fp)==NULL)){ //「ファイルがあって、中に何も書かれていない」という条件式を書きたい// remove("example.txt"); } return 0; } 大学で講義としてC言語を習っている程度の知識です。 fopenのif文の書き方があってるかどうかもわからないんですが^^; borland c++ 5.5.1を使用しています。 よろしくお願いします。
- 締切済み
- C・C++・C#
- fopen【C言語】
C言語でファイルをオープンするときに デスクトップにあるkanjdata.txtというファイルを指定したいのですが \ や : 等色々試してみたのですがどうしてもファイルが開けません、どの様に指定すればデスクトップにあるファイルをオープンできるのでしょうか?? kanjdata.txtのある場所は C:\Documents and Settings\ユーザ\デスクトップ です、よろしくお願いいたします. 今作っているもの if( (fp = fopen("kanjdata.txt","rt") ) ==NULL ) { printf("ファイルが開けません\n") ; exit(0) ; }
- ベストアンサー
- その他(プログラミング・開発)
- C言語 fopenのエラー処理
#define IN "*.txt" FILE *rp; if (!(rp = fopen(IN, "r"))){ printf("Can't open file.\n"); return (-1); } というプログラムを書いていたのを見たのですが、これでどうやってエラー判定してるのか分かりません。 「!」はどういう役割をになっているのですか??
- ベストアンサー
- 情報工学
- C言語、fgetcを利用しファイルの内容を変数に
C言語について質問です C言語のfgetcを利用しファイルの内容を変数にいれてそれを返す関数を作っているのですがうまくいきません <!--以下ソース--> char *file_get_contents(char *filename){ FILE *fp; int c; char *return_str; if((fp=fopen(filename,"r"))==NULL) return NULL; while((c=fgetc(fp))!=EOF ){ sprintf(return_str,"%c",c); } fclose(fp); return return_str; } 誰か理由と改善方法を教えてください!
- 締切済み
- C・C++・C#
- fopenできる上限の変更
C言語のfopenで同時に開けるファイル数の上限を変える方法を教えてください。 3000個程度を超えると開けなくなりました。(戻り値がNULL) 自分としては512や2048以上のファイルを開けたことが不思議だったのですが・・・ 以下にOSのバージョンなどを書きます また、fopenで開けるファイル数の上限はどのようにして見ることができますか。(書かれている変数がありますか? あともうひとつ、 100万程度の大量のファイルを同時に開ける言語はありますか。 (OSの限度などは抜きにして。) よろしくお願いします。 ---- OSはDebian 4.0 コンパイラはgcc 4.1.2 /proc/sys/fs/file-max による上限は数十万でした。
- 締切済み
- C・C++・C#
お礼
お返事遅くなりごめんなさい。 丁寧なご回答ありがとうございます。 下記にも示してありますが、 Wr5さんとcyacyaさんが教えてくださったやり方で調べたところ、 ファイル名の値は 0x445c3a43<不適切なPtr> となっていました。 よく調べてみると、ファイルは読み込みモードで開けていますが fscanfで読み込めない状態になっているようです。 読み込みたいファイルの中身は C:\Test\Debug\Data.txt Data.txt のように、あるフルパス名とファイル名が書き込まれてあります。 Wr5さんがおっしゃっているように、 「UNICODEな文字列の入ったモノを渡している」のでしょうか。 この場合、「書き換え」が必要になってくるのでしょうか。 質問ばかりになってしまいごめんなさい。Webで調べてもしっくりくるものが 無かったので・・・よろしければ教えていただきたいです。
補足
こんばんは、今回質問させていただいた者です。 ただいまパソコンに向かって格闘していたところ プログラムが成功しましたので、Wr5さんの補足内容に失礼して ご報告させていただきます。Wr5さんごめんなさい。 いろいろ調べたところ、今までのプログラムのfopenでは 文字列さえ読み込めない状態になっていた事に気づきました。 そこで文字列を入れる変数の型を変えたり等いじっていましたら 文字列が読み込めるようになりました。 これでファイルの中身のフルパス名、ファイル名を読み込めることができました。 大変お騒がせいたしました。 皆さんのお蔭で、C++やVS2005の使い方についてより理解することができました。 この場をお借りしてお礼申し上げます。 ありがとうございました。