🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

2回答

5504閲覧

c言語で構造体のchar型のメンバと文字列をif文で比較するにはどうしたらいいでしょうか?

wwwwwa.k.awww

総合スコア4

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2021/01/11 09:01

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

ソースコード

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tiitoi

2021/01/11 09:02

現状のコードを記載してください
y_waiwai

2021/01/11 09:02

質問は編集できます 追記修正しよう
ppaul

2021/01/12 09:46

ryo8903さんは、’p’という文字と、"abcd"と言う文字列では、どちらが大きいと思いますか?
thkana

2021/01/12 12:48

本当に「文字と文字列を比較したい」のでしょうか。やりたいことがあって、その解決が「文字と文字列の比較」ではないかと考えたのではないのですか? 方法に固執しないで、もともと何をやりたかったのかを提示することによって根本的な解決が得られたりする...かも知れません。(XY問題、とかいうらしい)
guest

回答2

0

ベストアンサー

strcmp関数を使ってみましたが、引数がポインタではないといけなく、
ポインタに関する知識がまだ乏しいので、他の方法がないかと思い質問しました。

strcmpの引数はポインタですが、以下の形でも使用可能です。
ポインタに関する知識がまだ乏しくても、問題ないと思います。
以下は、strcmpの使用例です。

C

1#include <stdio.h> 2#include <string.h> 3int main(void) 4{ 5 char moji_a[16] = "ABCD"; 6 char moji_b[16] = "XYZ"; 7 char moji_c[16] = "ABCD"; 8 if (strcmp(moji_a,moji_b)==0){ 9 printf("moji_aとmoji_bは同じです\n"); 10 }else{ 11 printf("moji_aとmoji_bは違います\n"); 12 } 13 if (strcmp(moji_a,moji_c)==0){ 14 printf("moji_aとmoji_cは同じです\n"); 15 }else{ 16 printf("moji_aとmoji_cは違います\n"); 17 } 18 return 0; 19} 20

実行結果
moji_aとmoji_bは違います
moji_aとmoji_cは同じです

実際のソース上で、どのように比較したいのか、
提示していただければ、より具体的な回答が得られるかと。

投稿2021/01/12 01:41

tatsu99

総合スコア5493

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wwwwwa.k.awww

2021/01/12 13:53

ありがとうございます。やりたいことができました!
guest

0

char型は「文字」ですから、「文字列」とは直接に比較は出来ないでしょう。

ただ、文字列は文字の集合体ですから、文字列を構成する文字と何かの文字を比較する、ということは出来ますね。

それがあなたのやりたいことなのかどうか、質問に書いてないことは私には知るよしもありませんが。

なお、ごちゃごちゃ言えば、if文は「比較」するものではありません。単に条件式の値が0以外なのか0なのかで分岐するだけです。
==とか<とかの「演算子」が右辺と左辺を比較して0か1かを返す働きを持っていますが、これはif文とは直接の関係はなにもありません(よく組み合わせて使われることは確かですが)。

投稿2021/01/11 09:29

thkana

総合スコア7703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wwwwwa.k.awww

2021/01/11 09:37

strcmp関数を使ってみましたが、引数がポインタではないといけなく、ポインタに関する知識がまだ乏しいので、他の方法がないかと思い質問しました。
thkana

2021/01/11 09:44

strcmpは文字列と文字列とを比較する関数です。 Cでは、文字列は文字型の配列(で、'\0'で終端されたもの)です。また、Cでは配列はその先頭要素へのポインタを以て関数への引数としますから、文字列を渡すために引数にはポインタを要求されます。 で。 回答は読んでいただけていますか? 他の方法もなにも、「文字」と「文字列」は違うものだから比較はできません。 文字と文字列を比較したいと考えた時点でそれが間違いです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問