質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.50%
C

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

Q&A

解決済

3回答

268閲覧

C言語 名前の比較?

ryo_py

総合スコア25

C

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

0グッド

0クリップ

投稿2018/01/19 15:04

名前を入力するループの中でOwariという名前の人が入力されたらループを抜けるというものを作りたいのですが、

C

1 int n; 2 3 while(1){ 4 scanf("%s", &n); 5 if (n==Owari){ //この行でエラーが出ます 6 break; 7 } 8 printf("%d", &n); 9 }

Owariの部分を変えないといけないと思うのですが、なんと書けばいいでしょうか。

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

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

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

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

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

guest

回答3

0

ベストアンサー

strcmp(n, "Owari")
ではないでしょうか?
strcmpは文字列が等しいかどうかを判定する関数です。
if文を
if (!strcmp(n, "Owari")){
こんな感じに書き換えてあげればうまく動くはずです。

投稿2018/01/19 15:06

編集2018/01/20 09:35
sublimer

総合スコア403

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

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

sublimer

2018/01/19 15:09

ソースを見返してみたのですが、nはint型なので%sで文字列を入れようとするのはおかしいですね。 ユーザーがOwariと入力するまでループを続けたいのですよね? であれば、char型の配列を使う必要があります。
ryo_py

2018/01/19 16:36

以下のようなエラーが出てしまいました。 warning: implicit declaration of function 'strcmp' [-Wimplicit-function-declaration] if (strcmp(n,"Nanashi")){
sublimer

2018/01/19 17:17

ソースコードの先頭に #include <string.h> を追加してください。
ryo_py

2018/01/19 17:40

コンパイルできました! ありがとうございます。
sublimer

2018/01/19 17:40

解決したようでよかったです。
otn

2018/01/19 23:47

ifの条件が逆ですね。
sublimer

2018/01/20 09:34

otn さん おっしゃる通りです。大変失礼いたしました。 ご指摘、ありがとうございます。
sublimer

2018/01/20 09:36

netai さん 私の回答が間違っておりました。 回答を編集いたしましたので、ご確認いただければ幸いです。
ryo_py

2018/01/20 16:56

わざわざありがとうございます!
guest

0

数値と文字列(文字の配列)の違いを学習し直さないと無理です。

int n;は、nを整数型変数として宣言しています。
scanf("%s",&n);と書く場合、ncharの配列である必要があります。
printf("%d", &n);と書く場合、nは整数型である必要があります。
文字列の比較は、strcmp(~,~)strncmp(~,~,長さ)を使います。一致した場合に0を返します。

投稿2018/01/19 15:15

otn

総合スコア84423

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

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

0

変数の型を意識するようにしてください。
int型であるnに文字列を入力しようとした段階で、アウトです。
char型の配列として宣言すると良いでしょう。その際、充分な領域を確保してください。

文字列の比較にも問題がありますが、それは既にsublimerさんが指摘されているとおりです。

投稿2018/01/19 15:10

LouiS0616

総合スコア35658

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問