表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
7/16

0があること、何も無いこと

 前回nullデバイスは0を返しているのでは? と書きましたがややこしいことになりました。


 nullデバイスと似たようなものに/dev/zeroがあります。

 まずは以下のCコードを見てください。

--------------

#include <stdio.h>

int main(){

int a = 7,b = 9;

FILE *zero;

FILE *null;

zero = fopen("/dev/zero","r");

null = fopen("/dev/null","r");

printf("a=%d\n",a);

printf("b=%d\n",b);

a = fgetc(zero);

b = fgetc(null);

printf("%d\n",a);

printf("%d\n",b);

return 0;

}

--------------

 aとbに適当な整数を入れて/dev/zeroと/dev/nullから一文字読み込んで表示しています。

 さて実行結果はどうなると思いますか?

 こうなりました。

--------------

a=7

b=9


-1

--------------

 まずaとbに数が入っていることを確かめます。

 そしてFILE構造体で/dev/zeroと/dev/zeroを開きます。

 Linuxでは全てがファイルなのでこういうふうにデバイスを開くことができます。

 そして2つのデバイスファイルから一文字読み込んで表示……

 aは/dev/zeroを開いているので0が返ってきます。

 bは……なんででしょう? -1を返してきました。

 Cでは0以外はすべて真と判定されるのでif文に入れるときは注意が必要なようですね。

 

 謎は深まる……


評価をするにはログインしてください。
この作品をシェア
Twitter LINEで送る
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。

この作品はリンクフリーです。ご自由にリンク(紹介)してください。
この作品はスマートフォン対応です。スマートフォンかパソコンかを自動で判別し、適切なページを表示します。

↑ページトップへ