• 締切済み

文字列の比較

文字列の比較の仕方がよくわかりません。strcmpコマンドを使わずにできるだけ簡単にかく方法を教えてください。途中までは書きます。for分とかを使うんでしょうか? #include <stdio.h> int main(void) { char SpelA[] = "dog"; char SpelB[] = "dogfood" ; int long ; long = 1 ; if (long == 1) { printf("Good!\n") ; } ; return 0 ; } ;

みんなの回答

  • motipan
  • ベストアンサー率0% (0/1)
回答No.3

#include <stdio.h> int main(void) { char SpelA[] = "dog"; char SpelB[] = "dogfood"; int i; for(i = 0;SpelA[i] == SpelB[i] && i < sizeof(SpelA);i++); if (i == sizeof(SpelA))printf("Good!\n"); return 0 ; } こんな感じでしょうか(汚いソースですが…) この場合sizeof(SpelA)は4が入ってます。 『dog』の3バイトと1バイト(なにか忘れました)で4です。 つまり『dogfood』なら8です。 日本語の場合、『文字列』なら3文字*2バイトと1バイトで7です。 あと、longは予約語なんで変数には出来ません

noname#22058
noname#22058
回答No.2

#include <stdio.h> int my_strcmp(const char *s1, const char *s2); int main(void) { char SpelA[] = "dog"; char SpelB[] = "dogfood"; int n; n = my_strcmp(SpelA, SpelB); printf("%s\n", n == 0 ? "同じ長さ" : n < 0 ? "SpelAが短い" : "SpelAが長い"); return 0; } int my_strcmp(const char *s1, const char *s2) { while (*s1 == *s2) { if (*s1 == '\0') return 0; s1++; s2++; } return (unsigned char) *s1 - (unsigned char) *s2; }

  • langria
  • ベストアンサー率18% (6/33)
回答No.1

>>strcmpコマンドを使わずにできるだけ簡単にかく方法 strcmpを使わない理由はなんですか? 比較してどうしたいんですか? >>途中までは書きます。for分とかを使うんでしょうか? 書かれているものを見ると必ずGoodと出力されて終了しますが、何をどうしたいのかが見えません。

senkei777
質問者

補足

SpelA[]の内容とSpelB[]の内容が同じならGoodと表示させたいんです。たとえば2つの内容がdog=dogならGoodのように。dog=catとかなら何も表示しないように。 strcmpを使わないのはC言語の本にstrcmpを使わずに書けとかかれていたからです。必ずGoodと出力されてしまうのでそうならないような書き方を教えてほしいんです。説明不足ですみません。

関連するQ&A