- ベストアンサー
access関数を説明できる方いますか?
toysmithの回答
- toysmith
- ベストアンサー率37% (570/1525)
実は数日前にOSをクリーンインストールしてまして、GCC(Cygnus GNU Win32ですが)が入ってないんです。 すみません、GCCについてはちょっと時間がかかりますので他の方の回答が早いかもしれません。 POSIXを想定してたのでmacros.hを持ち出したのですが、ANSI標準ではないので他の処理系では存在しないかもしれません。 access()の関数値は 0=処理が正常に終了 -1=失敗 です。 第2引数が0の場合関数値が0なら「ファイルは存在する」なのですが、-1であっても「存在しない」とは限りません。 そこで、errnoで詳細を確認する必要が出てくるのです。 代表的な例としてはEINTRで、「割り込み発生」を示します。 この場合はファイルは存在します。 stat()の第2引数には常にstruct statのアドレスを渡します。 struct stat st ; if (stat("c:\\xxx.dat", &st) == -1) { switch (errno) { case ENOENT :/* ファイル無し */ case EINTR : /* 割り込み発生(正常) */ default : /* その他のエラー */ perror("c:\\xxx.dat") ; } } このような使い方になります。 なぜ、access()よりstat()をお勧めするかと言うと…。 access()の第2引数は処理系依存だからです。 MSDNでも_access()となっており互換性はWin95/NTです。
関連するQ&A
- C言語の関数を分かりやすく説明してください。
C言語を学習しています。 C言語の入門書を読んでいて、どうしても関数のこと(引数とか戻り値とか自作関数についてのこと)が分かりませんでした。ネットで調べてみたりもしたのですが分かりませんでした。 かみ砕いて説明していただけるとありがたいです。
- ベストアンサー
- C・C++・C#
- C言語によるガンマ関数の記述
今、C言語を用いてガンマ関数を計算する方法を模索中でです。 理想的にはガンマ関数の引数に数値を入れたら戻り値を返すというのがいいのですがそうもうまくいかないと思います。 そこで以下のような形で整数の場合と非整数の場合で作ることを考えています。しかし、引数が整数のときはわかるのですが、非整数のときがわかりません。どうしたらよいでしょうか。 以下に関数の概要を掲載します。 ==========関数の概要=========== 関数名:Gamma(x) 戻り値:double 引数:x[double] 1)引数が0より大きい整数(1,2,3...)のとき 階乗の自己回帰文を使用して計算 2)引数が0より大きい非整数の場合 ==========▲ここまで==========
- ベストアンサー
- C・C++・C#
- C言語の高階関数についてです。
C言語の高階関数についてです。 double f ( (*g)(double) ){...} とすると「関数を引数にする関数」が作れますが、 「関数を引数にする関数」を引数にする関数って作れますか??? その場合は、引数のところどうやって書けばいいでしょうか??
- ベストアンサー
- C・C++・C#
- C++で他のファイルの関数の引数を引きだす方法
C++初心者です。 あるCプログラムに関数: testFunction(const char x[ ], int a, int b, int c)があり、 この関数はchar y[ ]を戻り値として返します。 次の段階で、別のC++を作成し、その中で、上記testFunctionを呼び出し、 使用している引数を引き出して以降のプログラムで使用する仕様のプログラムを組んでいます。 他のファイルに存在する関数を呼び出す方法は、 std::cout << testFunction(x[], a, b, c) << std::endl; ではないかと思っているのですが、ここから先が進まず困っている状況です。 戻り値だけではなく、引数も呼び出すことは可能でしょうか。 可能であれば、どのようにして呼び出すことができるのでしょうか。 アドバイスをお願いいたします。
- ベストアンサー
- C・C++・C#
- 関数引数に対する制限値チェック方法
引数に対する制限値チェック方法 プログラミング(組み込み系C言語)関数作成時にいつも私が迷ところなのですが、 関数の引数に対する制限値(範囲外)チェックどうするか、次の(1)、(2)で悩んでます。。 【1】関数内で制限値チェックで行い、制限値外であれば戻り値でエラーコードを返す。 【2】関数呼び出し時に、引数となる値(変数)をチェックし、制限値内であることを確認してから、関数を呼び出す。 上記の【1】、【2】の方法どちらがよいでしょうか? 状況にもよるとは思うのですが、その場合はどういった状況時に(1)||(2)がよいのか教えてください。 (【3】もあればお願いします。) --【1】がお勧めの場合の質問 (1)本関数での"結果"を返したいときどうすればよいかアドバイスください。 戻り値("結果")と、エラーコードを兼用するのはなんかイヤです。。 エラーコード付き関数は、全て同じ戻り値(1:OK時、-1:NG時 みたいに) としてまとめたいからです。 (2)極端にほとんどの関数の戻り値を、OK/NG とす。これってどうですか?、 /////////////////////// 【1】、【2】の利点、欠点を僕なりに考えてみました。 ##【1】の利点/欠点 利点: ・本関数呼び出し時に、毎回制限チェックをしなくてよくなる。 (汎用的に様々な場面で、使用するのであればこれは良い利点だと思います。) 欠点: ・戻り値のとして、エラーコードを返さなくてはならないため、本関数での結果を返したい場合、 以下方法をとらないといけない。 1、引数をポインタとして、その引数で値を返す。 2、戻り値として、エラーコードと兼用して返す。 (例:エラー時の戻り値 = 0、正常にの戻り値 = 1~ 255) ##【2】の利点/欠点 利点: ・エラーコードを返す必要がなくなるため、戻り値が有効利用できる。 欠点: ・関す呼び出し毎に、制限チェックが発生し、制限チェック忘れが発生する。 (汎用的に使うにのであればなお・・・)
- ベストアンサー
- C・C++・C#
- c言語の関数定義について
次の関数定義を考える. int f(int x) {if (x > 0) {return x * f(x-1);} else {return 1;} } この関数f と働き(すなわち,引数と戻り値の関係)が同じで再帰呼出(recursive call) を使わない関数g をC で定義せよ.ただし,オーバーフロー(overflow) については考慮しなくてよい. ”この関数f と働き(すなわち,引数と戻り値の関係)が同じで再帰呼出(recursive call) を使わない関数g をC で定義せよ”って理解できません、どのように定義したいいか、ご教授お願いします。
- ベストアンサー
- C・C++・C#
- XSUB.h、EXTERN.h、perl.h について
◆状況 C言語+Perlで作られている機能を、 Perlだけのソースに移行しようとしています。 ◆困っていること 今まで、知らない言語を読む際、 ネットや本にある、関数一覧などから、 「そのプログラムで何をしようとしているか?」 を読み取れていたのですが、 C言語+Perlにおける、下記の関数??と思われるものなどについて、 全然、資料/情報が見つからず、困っています。 具体的には、 dXSARGS Perl_croak SvPV_nolen XPUSHs PUTBACK などです。 (恐らくは、EXTERN.h、perl.h、XSUB.h というヘッダファイルに定義されているのかも知れませんが。) stdio.h などにあるような、fopen関数だったり、fscanf関数などのようなものは、 いくらでもネット上/本に載っているのですが、上述のものについて、全然見つかりません、、 /***********************************/ また、includeファイルに、定数、構造体の定義、関数のプロトタイプ、マクロの定義、が記述されると認識していますが、 しかしながら、 ソース上に出てくる「Perl_croak」という箇所は、おそらく、Perl_croakという関数のように思われました。 と、すると、 includeファイルに、引数&戻り値などのインターフェース仕様だけ書かれているのではなく、 Perl_croak関数が行う、「処理の実態」も、ヘッダファイルに記述されているということでしょうか?? また、 dXSARGS という箇所については、戻り値を受け入れるような記述もなく、 dXSARGS; と一行書かれているだけなのですが、関数ではなく、戻り値を必要としないサブルーチンということでしょうか? /***********************************/ どなたか、資料/情報や、もしくは調べ方などをご存知の方がいらっしゃれば、 ご教授お願いできませんでしょうか? 些細な情報でも構いませんので、宜しくお願い致します。。
- ベストアンサー
- C・C++・C#
- 文字列の数字部分を取り出す関数・メソッド
こんにちは。 ある文字列から、数値部分を取り出す関数やメソッドは存在するのでしょうか? たとえば、 引数:"abc123"→戻り値:123 引数:"a1b2c3"→戻り値:1 ※はじめに見つかった数値 という感じです。 無いのであれば、自作しようと考えているのですが…。
- ベストアンサー
- Visual Basic
- スプレッドシートのGASの関数で複数戻り値取得
googleのスプレッドシートを使っています。 Google Apps Scriptでデータの取得を行っているのですが、 1つの関数から複数の戻り値を得るような方法はありますでしょうか? マイコンのC言語などをやった際に、ポインタ変数を関数の引数に設定して、その関数の引数に配列変数などをアドレス指定で設定することで複数の戻り値を得るような方法があったと思うのですが、GASでも同様の方法などはありますでしょうか? どうぞ、ご教示の程よろしくお願い致します。
- 締切済み
- Excel(エクセル)
補足
本当にありがとうございます。おかげさまでファイルの存在チェックがだいたいマスターできました。 最後に少々お聞きしたいのですが、 stat関数の関数値とaccess関数の関数値は同じ意味であると解釈してもいいのでしょうか? それと、どのような本を探せばこのような内容が説明してあるのでしょうか?このような内容や、errnoの全ての値の意味などを勉強してみたいと思うのですが、探し方が悪いのか、それとも住んでる所が田舎すぎるのか、sys内のヘッダファイルを使うような本を見たことがありません。 それともこれらの事はmanやMSDNで調べるべきなのでしょうか?