私は今タイピングゲームの試作品を作っているのですが
表示した文字と入力した文字の比較でうまくいかず困っています
どうすれば比較することができるのでしょうか?
回答よろしくお願いします
普通のC言語での質問です
Re:普通のC言語での質問です
==をつかってるんですがうまくいかないんです・・・
ソースコード書きます
#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;
}
ソースコード書きます
#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言語での質問です
文字列の比較で困っているとしたら、
strcmp などの文字列比較関数を使いましょう。
文字列の比較に==などの演算子は使うことができません。
(std::stringなどを使う、という手もありますが)。
strcmp などの文字列比較関数を使いましょう。
文字列の比較に==などの演算子は使うことができません。
(std::stringなどを使う、という手もありますが)。
Re:普通のC言語での質問です
まず、比較するものが違います。
aはアドレスであるのに対し、cは1文字データそのものを入れる変数です。
例えば「この手紙に書いてあるAさんというのは3号棟に住んでるAさんのことか?」という事が調べたいのに
「中身と住所」を比較しているので
「この手紙に書いてあるAさんというのは3号棟のことか?」
のような意味不明な比較になってしまっています。
文字列の比較はMNSさんの仰る通り、関数を使うか、1文字ずつ調べていく必要があります。
また、「初心者」はポイントランク名であって、名前ではありませんので。
aはアドレスであるのに対し、cは1文字データそのものを入れる変数です。
例えば「この手紙に書いてあるAさんというのは3号棟に住んでるAさんのことか?」という事が調べたいのに
「中身と住所」を比較しているので
「この手紙に書いてあるAさんというのは3号棟のことか?」
のような意味不明な比較になってしまっています。
文字列の比較はMNSさんの仰る通り、関数を使うか、1文字ずつ調べていく必要があります。
また、「初心者」はポイントランク名であって、名前ではありませんので。
Re:普通のC言語での質問です
また質問すいません・・・
なぜか入力した後うごかなくなるんですがどうしてなんでしょうか?
ソースコードはります
#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;
}
という感じです・・・
たびたびすいません・・・
なぜか入力した後うごかなくなるんですがどうしてなんでしょうか?
ソースコードはります
#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言語での質問です
ssを定義する場所と、定義する内容が根本的に違っています。
main関数の引数ではない場所で、配列として定義してください。
なお、string.hをインクルードしていますので、strcmpのプロトタイプ宣言は不要です。
そのプロトタイプ宣言は、string.hの中に書いてあります。
main関数の引数ではない場所で、配列として定義してください。
なお、string.hをインクルードしていますので、strcmpのプロトタイプ宣言は不要です。
そのプロトタイプ宣言は、string.hの中に書いてあります。
Re:普通のC言語での質問です
まず、ssを引数にせず、グローバル変数にするか、a[/url]と同じように、main関数内で宣言してください。
また、ssは配列にしなくてはなりません。
ss[256]などと十分な大きさをとる必要があるでしょう。
あとは、
int strcmp(const char *ss,const char *a);
この宣言は必要ないと思います。
それくらいですかね。
また、ssは配列にしなくてはなりません。
ss[256]などと十分な大きさをとる必要があるでしょう。
あとは、
int strcmp(const char *ss,const char *a);
この宣言は必要ないと思います。
それくらいですかね。