ページ 11

普通のC言語での質問です

Posted: 2009年5月14日(木) 22:13
by ファウスト
私は今タイピングゲームの試作品を作っているのですが
表示した文字と入力した文字の比較でうまくいかず困っています
どうすれば比較することができるのでしょうか?
回答よろしくお願いします

Re:普通のC言語での質問です

Posted: 2009年5月14日(木) 22:18
by toyo
どうすればといわれても普通に比較演算子を使うとしか答えようが無いです
==

!=
で比較します

Re:普通のC言語での質問です

Posted: 2009年5月14日(木) 22:22
by ファウスト
==をつかってるんですがうまくいかないんです・・・
ソースコード書きます
#include<stdio.h>

int main(char *ss)
{

char a[/url] = "kyouhaiitennkidesune\n",c;
printf("%s",a);

gets(ss);
c = puts(ss);

if(c == a){
printf("おみごと!!");
}
else{
printf("残念");
}
return 0;
}

Re:普通のC言語での質問です

Posted: 2009年5月14日(木) 22:22
by MNS
文字列の比較で困っているとしたら、
strcmp などの文字列比較関数を使いましょう。
文字列の比較に==などの演算子は使うことができません。
(std::stringなどを使う、という手もありますが)。

Re:普通のC言語での質問です

Posted: 2009年5月14日(木) 22:25
by ファウスト
初心者さんありがとうございます!!
試してみます

Re:普通のC言語での質問です

Posted: 2009年5月14日(木) 22:34
by Dixq (管理人)
まず、比較するものが違います。
aはアドレスであるのに対し、cは1文字データそのものを入れる変数です。

例えば「この手紙に書いてあるAさんというのは3号棟に住んでるAさんのことか?」という事が調べたいのに
「中身と住所」を比較しているので
「この手紙に書いてあるAさんというのは3号棟のことか?」
のような意味不明な比較になってしまっています。

文字列の比較はMNSさんの仰る通り、関数を使うか、1文字ずつ調べていく必要があります。
また、「初心者」はポイントランク名であって、名前ではありませんので。

Re:普通のC言語での質問です

Posted: 2009年5月14日(木) 22:39
by ファウスト
また質問すいません・・・

なぜか入力した後うごかなくなるんですがどうしてなんでしょうか?
ソースコードはります
#include<stdio.h>
#include<string.h>
int strcmp(const char *ss,const char *a);
int main(char *ss)
{

char a[/url] = "kyouhaiitennkidesune\n";
printf("%s",a);


gets(ss);
puts(ss);

if(strcmp(ss,a) == 0){
printf("おみごと!!");
}
else{
printf("残念");
}
return 0;
}
という感じです・・・
たびたびすいません・・・

Re:普通のC言語での質問です

Posted: 2009年5月14日(木) 22:45
by box
ssを定義する場所と、定義する内容が根本的に違っています。
main関数の引数ではない場所で、配列として定義してください。
なお、string.hをインクルードしていますので、strcmpのプロトタイプ宣言は不要です。
そのプロトタイプ宣言は、string.hの中に書いてあります。

Re:普通のC言語での質問です

Posted: 2009年5月14日(木) 22:49
by MNS
まず、ssを引数にせず、グローバル変数にするか、a[/url]と同じように、main関数内で宣言してください。
また、ssは配列にしなくてはなりません。
ss[256]などと十分な大きさをとる必要があるでしょう。
あとは、
int strcmp(const char *ss,const char *a);
この宣言は必要ないと思います。

それくらいですかね。

できました!!

Posted: 2009年5月14日(木) 23:01
by ファウスト
おかげさまでできました!!ありがとうございました
MNS様
box様
管理人様
toyo様
また質問するかもしれませんがその時はおねがいします!!