• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:初歩的な質問です char同士が同じ値(=)の確認について)

char同士が同じ値の確認について

このQ&Aのポイント
  • char同士が同じ値の確認方法を教えてください。
  • charをintに変更する必要があるのか教えてください。
  • char同士が同じ値の場合は「good」、違う場合は「bad」と表示されます。

質問者が選んだベストアンサー

  • ベストアンサー
  • nicolish
  • ベストアンサー率72% (13/18)
回答No.2

紙Aには「555」と書いてあります。 紙Bにも「555」と書いてあります。 AとBは同じ紙ですか? 答え:違います。 aとbはたまたま中身が同じというだけで、別のものを指しています。 従って、「同じかどうか」ではなく、「中身が同じかどうか」を比較しなくてはいけません。 ==は「同じかどうか」を比較するものなので使えません。このような時のために、「中の文字が同じかどうか」を比較するstrcmpという関数があります。使い方はググって…もとい、MSN検索して下さい。

zendoko
質問者

お礼

早速・・ぐぐって・・・検索してやり方を確認の上使用してみました。 ありがとうございました^^

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

>char 同士の=判定はどのようにすればいいでしょうか? char 同士の比較でないことに気付きましょう。

zendoko
質問者

補足

そうしたら・・・char から int に変換はできるでしょうか? Array [] からそれぞれ値を取り出して判定しないといけないので、どうしても 比較対象が Array同士になってしまうんですが・・

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • char型+char型ってint型? if(char型==int型)?

    C言語の「汎整数拡張(インテグラルプロモーション)」というものに関するものだと思います。 char型とchar型を加えた結果は、char型でしょうか。それともint型でしょうか。 (下のプログラムの printf("sizeof(a[0]+a[1])は%d\n", sizeof(a[0]+a[1])); /* char型+char型 */ という部分の結果は4なので、int型と考えるべきなのかな。) 私は、char型とint型の加算の結果はint型だと思っていましたが、 char型とchar型の加算の結果はやはりchar型だと思っていました。 (それが間違えているのでしょうか。) if(a[0]==i) /* char型とint型の比較(?) */ の部分では、左辺はchar型、右辺はint型ですが、このように型の違う変数を比較しても文法上構わないのでしょうか。 (私は、「比較は必ず型の同じもの同士でしかできない」と思っていました。) 左辺はchar型のように見えて、じつはint型ですか。 #include <stdio.h> int main(void) { char a[4]; int i=77; printf("sizeof(int)は%d\n", sizeof(int)); printf("sizeof(char)は%d\n", sizeof(char)); printf("sizeof('M')は%d\n", sizeof('M')); printf("sizeof(a[0])は%d\n", sizeof(a[0])); a[0]='M'; a[1]=7+6; a[2]=a[0]+a[1]; printf("sizeof(a[0]+a[1])は%d\n", sizeof(a[0]+a[1])); /* char型+char型 */ printf("sizeof(+a[0])=%d\n", sizeof(+a[0])); if(a[0]==i) /* char型とint型の比較(?) */ puts("a[0]==i"); else puts("a[0]!=i"); return(0); } ちなみにワーニングもエラーもなんにもでません。

  • c言語についての質問です。

    #include<stdio.h> int main(void){ int a; printf("1文字たいぷしてください。\n"); scanf("%d",&a); if(a>=65 && a<=90){ printf("大文字です。\n"); } else if(a>=97 && a<=122){ printf("小文字です。\n"); } else{ printf("大文字でも小文字でもありません\n"); } return 0; } このプログラムは正しくなくて、 intをchar %dを%cにかえなければなりません。 なぜintはダメなんでしょうか? できれば丁寧に教えてください。 お願いします。

  • int型とchar型について

    C言語初心者です。 よろしくお願いします。 ◎1----------------------- #include<stdio.h> int main(void) { int ss[4]="789"; printf("%c\n",ss[0]); return 0; } --------------------------- ◎2----------------------- #include<stdio.h> int main(void) { int *p; p="789"; printf("%c\n",*p); return 0; } --------------------------- ◎1、◎2の2つのプログラムについて疑問があります。 ◎1の「int ss[4]="789";」と◎2の「int *p;」のintの部分は今まで、何の疑問も抱かず、「char」として入力していました。 そこでchar型は1バイトの整数、int型は4バイトの整数ということで容量が違うだけで、intとしても大丈夫だろうと思ったのですが、 ◎1では、「'initializing' : 'char [4]' から 'int [4]' に変換することはできません。」とエラーが出て、◎2では「'char [4]' から 'int *' に変換することはできません。」とエラーが出ます。 intは文字列は扱えないということなのでしょうか? 以上intだと実行できない理由がわかりません。 初歩的なことですいませんが、教えていただけると嬉しいです。

  • C言語の初歩的な質問

    質問1----------------------------------------- #include<stdio.h> int main() {  int a;  char b[10];  for(int i = 0;i < 2;i++){   scanf("%d",&a);   printf("整数%d\n",a);  }  scanf("%s",b);  printf("文字列%s\n",b); } /* この際に、例えばabと入力すると結果が 整数-858993460 整数-858993460 文字列ab となり整数入力を無視して進められるのはなぜでしょうか? */ 質問2----------------------------------------- #include<stdio.h> void func(int**); int main() {  int *p;  func(&p);  printf("%d",*p); } void func(int **pp) {  int n = 10;  *pp = &n; } /* func関数のnはスコープからはずれて変数の寿命がなくなるはずなのにprintfで表示されるのはなぜでしょうか? */ ---------------------------------------------- C言語は一冊の本とネットの入門サイトをかじった程度の理解です。

  • int とcharの使い方と違い

    教えてgooに投稿するのは初めてですがよろしくお願いします。 最近C言語を勉強し始めた初心者です。 ネットのサイトを見て独学でしています。 過去スレッドをさらっと見て聞きたいことが書いてなかったので投稿します。(同じスレッドがあったらすみませんOTL) #include<stdio.h> int main(void) { int str='a'; printf("str=%c\n",str); return0; } この上のプログラムでは str=a と出て、エラーが出ずにコンパイル出来ました。でも、 #include<stdio.h> int main(void) { int str[]="abc"; printf("str=%s\n",str); return0; } とするとエラーが出ます。 int とcharの使い方と違いについて詳しく教えてほしいです>< お願いします。

  • 配列について

    初歩的な質問ですいませんが、質問よろしくお願いします。 ◎1----------------------------- #include<stdio.h> int main(void) { char ss[10]="AB"; printf("ss=%s\n",ss); return 0; } ------------------------------------ ◎2-------------------------------- #include<stdio.h> int main(void) { char ss[10]; ss[0]='A'; ss[1]='B'; ss[2]=0; printf("ss=%s\n",ss); return 0; } ----------------------------------- ◎3------------------------------- #include<stdio.h> #include<string.h> int main(void) { char ss[10]; strcpy(ss,"AB"); printf("ss=%s\n",ss); return 0; } ----------------------------------- ◎4------------------------------- #include<stdio.h> int main(void) { char ss[10]; ss="AB"; printf("ss=%s\n",ss); return 0; } ---------------------------------- 以上4つのプログラムで、◎2と◎3は正常に動くと理解できたのですが、何故、◎1は正常に動き、◎4は「'const char [3]' から 'char [10]' に変換できません。」といったようなエラーが出てしまうか分かりません。 教えていただければ嬉しいです。

  • このソースは間違っていますか?

    ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ #include<stdio.h> #include<stdlib.h> #define MAXLINE 256 int main(void); int main(void) { char buffer[MAXLINE]; int x; int y; char a; char b; printf("一人目の名前を英数字で入力してください。\n"); gets(buffer); a = at

  • C言語初心者です。 ジャンケンゲーム

    今、授業の課題でジャンケンゲームを作成していますが、なかなかできません。もし、良かったら何処が違うのか教えてください。 // main.c #include <stdio.h> #include <time.h> //#include <time.h> #include "my.h" main(int argc, char* argv[]){ int i; char s[7]; printf("これはジャンケンゲームです。\n"); printf("手を入力します(グー:1 チョキ:2 パー:3)\n"); scanf("%s",&s[7]); srand((unsigned)time(NULL)); printf("%s\n",jyan(dice(3))); if(s == jyan){ printf("あいこです。\n"); }else if(s == 1 && jyan ==2){ printf("あなたの勝ちです。\n"); }else if(s == 2 && jyan == 3){ printf("あなたの勝ちです。\n"); }else if(s == 3 && jyan ==1){ printf("あなたの勝ちです。\n"); }else{ printf("コンピュターの勝ちです。\n"); } } // dice.c #include <time.h> int dice(int n){ srand((unsigned)time(NULL)); return(rand()%n+1); } // jyan.c char *jyan(int n){ static char s[][7]={"グー","チョキ","パー"}; return s[--n]; } // my.h #include <stdio.h> char *jyan(int hand); //int dice(int n); 見づらくて申し訳ありません。4つのファイルに分けて作成しています。上記のプログラムだと自分の手、コンピューターの手がランダムに出てくるのですが判定が出来ませんでした。アドバイス、よろしくお願いします。 長文になってしまい申し訳ありません。

  • 初歩的な質問ですが教えてください。

    Cのあるプログラム中で、“他の実行ファイル”を用いた処理を行なう方法を 教えていただけないでしょうか。ただし、“他の実行ファイル”のソースファイルはありません。 例えば、aとbの二つの整数を渡して足し算する実行形式のファイルPlus.exeがあったとき、あるプログラム“test.c”の中で“Plus.exe”を用いて aとbの和Cを計算する方法を教えてください。 #include <stdio.h> int main(int argc, char *argv[]) { int a, b, c; a=atoi(argv[1]); b=atoi(argv[2]);   /* ここで c = a+b の計算をPlus.exeで行ないたいのですが・・・ */ printf("sum = %d\n", c); }

  • プログラムの実行結果を教えてください。

    #include <stdio.h> #include <string.h> int main() { char mojiretsu[10]; int nagasa; mojiretsu[0] = 'A'; mojiretsu[1] = 'B'; mojiretsu[2] = 'C'; mojiretsu[3] = '\0'; printf("%s\n", mojiretsu);