配列

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ふがふが

配列

#1

投稿記事 by ふがふが » 15年前

char array[5][4];
多次元配列array[1]には1~1000までの整数が入ります。
array[1][0]=>1
array[1][1]=>null
かもしれないし、
array[1][0]=>1
array[1][1]=>0
array[1][2]=>0
array[1][3]=>0
array[1][4]=>null
かもしれません。
ランダムにしてるので私も何が入るのかわかりません。

とりあえず整数(int)配列ではなく
文字列(char)配列ということで。

そこで
arrayに1のとき(array[1][0]=>1,array[1][1]=>null)
if文で処理をしたいのですが、
どのようにしたらよろしいですか?

if(array[1] == "1")
このようにしても上手く動作しません。

初歩的なことで申し訳ないのですが
おしえてください。

Poco

Re:配列

#2

投稿記事 by Poco » 15年前

> arrayに1のとき(array[1][0]=>1,array[1][1]=>null)
> if文で処理をしたいのですが、
> どのようにしたらよろしいですか?
>
> if(array[1] == "1")
> このようにしても上手く動作しません。

文字列の比較は関数strcmp()を使ってください。

if ( ! strcmp( array[1], "1" ) ){
// 文字列が等しい場合の処理
・・・
}

ふがふが

Re:配列

#3

投稿記事 by ふがふが » 15年前

>ぽこさん
ありがとうございます。

組木紙織

Re:配列

#4

投稿記事 by 組木紙織 » 15年前

とりあえず
こんな感じで
if(array[1][0] == '1' && array[1][1] == NULL)

やっていくと別の方法が欲しくなって区ので文字列操作関係の標準関数を調べてみてください。
strcmp()などの。

また。
文字と文字列の違いをしっかり把握してください。


/************************/
追記

先を越されてしまいましたね。
無意味なレスつけてすみません。 画像

dic

Re:配列

#5

投稿記事 by dic » 15年前

別の方法ですが
if( array[1] == "1" )
ではなく
if( array[1] == '1' )
でも できます
char の一文字の時だけですけどね

フリオ

Re:配列

#6

投稿記事 by フリオ » 15年前

 
 ちょっと気になったので、
char array[5][4];
で、
array[1][4]=>null
はだめです。
 

dic

Re:配列

#7

投稿記事 by dic » 15年前

あ、多次元配列ですね
if( array[0][1] == '1' )
です

へろりくしょん

Re:配列

#8

投稿記事 by へろりくしょん » 15年前

すでに解決しているところを、重隅をつつくようで申し訳ないのですが。

文字が必要なところで null とか NULL がちらほらと出てきていますが。


nullについては、ANSI-C の規格には無いようなのでちょっとスルーしますが、新ANSI C言語辞典によれば、NULLとは次のようにあります。

NULL[ヌル](=空) (1)空ポインタ (2)[マクロ/空ポインタ定数- | <stddef.h>,<stdio.h>,<stdlib.h>,string.h>,<time.h> | 値0の汎整数定数式か、void*型にキャストした式] 空(null) ポインタを示す空ポインタ定数である。

とあります。


また空ポインタについては次の通りです。

空ポインタ(null pointer) いかなるオブジェクト(記憶域)へのポインタとも、いかなる関数へのポインタとも区別され、比較しても等しいことはないポインタ。


C言語では、ポインタが現れるべき場所に定数0が現れると、それは空ポインタであると読み替えられます。
ですから、#define NULL 0x12345 といったあまり一般的でない定義の処理系であっても、char *hoge = 0; というコードと、char *hoge = NULL; というコードは等価となります。


だもので、本来char型と比較したり代入したりする物ではないと思うのですが。
一連の流れの中で、さもあって当然のように扱われていたので、ちょっと気になった次第です。


最近の規格は解らないのですが、実際のところどうなんでしょう。

閉鎖

“C言語何でも質問掲示板” へ戻る