Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C / C++で変数がNULLかどうかを確認する方法

C言語やC++には、NULL値を比較するための専用のメソッドや関数は用意されていません。代わりに、if文を使って変数がNULLかどうかを直接判定するのが最も一般的な方法です。

ここでは、実際のサンプルプログラムを通してその方法を見ていきましょう。このプログラムでは、システム上に存在しないファイルを読み取りモードで開こうとします。この場合、fopen関数は失敗を示すNULLを返すため、if文でその戻り値をチェックすれば、ファイルが開けたかどうかを判断できます。

サンプルコード

#include <stdio.h>
main() {
    // 存在しないファイルを読み取りモードで開いてみる
    FILE *fp;
    fp = fopen("hello.txt", "r");
    if(fp == NULL)
       printf("File does not exists");
    fclose(fp);
}

実行結果

File does not exists

コードの解説

fopen関数は、指定されたファイルを開けなかった場合にNULLポインタを返します。そのため、「fp == NULL」という条件式で比較することで、ファイルのオープンに失敗したことを検出できます。

なお、C言語では次のように論理否定演算子「!」を使って、より簡潔に書くことも可能です。NULLポインタは偽(0)として評価されるためです。

if (!fp)
    printf("File does not exists");

注意点: fclose関数にNULLポインタを渡すのは安全とは言えないため、実用的なプログラムでは、fcloseを呼び出す前にfpがNULLでないことを確認し、NULLの場合は処理を終了またはエラー処理に分岐させるのが望ましい設計です。

  1. Macでファイルのチェックサムを確認する方法【ターミナルの使い方】

    ダウンロードしたファイルの整合性(データが破損・改ざんされていないか)を確認できるよう、一部のWebサイトではファイルのチェックサムを公開しています。ユーザーが行うべきことは、Webサイトに記載されているチェックサムと、自分のマシン上で生成したチェックサムを比較することです。両者が一致していれば、ファイルは問題なくダウンロードされ、Webサイトから配信された本来のファイルであり、改変されていないことが確認できます。チェックサムを掲載しているWebサイト側には独自の生成ツールがあるかもしれませんが、一般ユーザーは自分のマシン上でどのようにチェックサムを確認すればよいのでしょうか。これまでLinu

  2. Rubyで変数が定義されているか確認する方法!defined?の使い方と注意点を徹底解説

    Rubyには、変数が定義されているかどうかを手軽に確認できるdefined?というキーワードが用意されています。 変数が存在する場合は、その種類が文字列として返されます。 local-variable 存在しない場合は、nilが返されます。 nil これはJavaScriptのtypeof演算子に近い働きをするものです。ただし、オブジェクトのクラスそのものを知りたいときは、defined?ではなくclassメソッドを使いましょう。 defined?には、いくつか覚えておきたい特徴があります。 defined?はメソッドではなく「キーワード」であること 名前の末尾に?が付くメソッドはt