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

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

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

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

Q&A

4回答

976閲覧

エラー

takepanman

総合スコア24

C

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

0グッド

0クリップ

投稿2016/08/24 07:33

実行するとエラーが出ます
対処法を教えてください。

lang

1#include <stdio.h> 2#include <string.h> 3 4int main(void) { 5 char s[50],c[]="c",h[]="h",o[]="o",k[]="k",u[]="u"; 6 int i,i2; 7 scanf("%s",s); 8 i=strlen(s); 9 if(i==0){ 10 printf("YES\n"); 11 }else if(strcmp(s[i],o)==0){ 12 printf("YES\n"); 13 } 14 return 0; 15} 16

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

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

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

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

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

episteme

2016/08/25 02:50

エラーとは コンパイルエラー? リンクエラー? 実行時エラー? 回答者に余計な負担をかけてはいけない。 なにをしたらどうなったかを説明すべし。やりなおし。
guest

回答4

0

こんな感じでも良い?

c

1#include <stdio.h> 2#include <string.h> 3 4int main(void) { 5 char s[50],c[]="c",h[]="h",o[]="o",k[]="k",u[]="u"; 6 int i; 7 scanf("%s",s); 8 i=strlen(s); 9 if(i==0){ 10 printf("YES\n"); 11 }else if(strcmp((s+i-1),o)==0){ 12 printf("YES\n"); 13 } 14return 0; 15}

投稿2016/08/24 09:46

A.Ichi

総合スコア4070

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

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

0

答えを書いてしまうのは簡単なのですが・・・
ヒントのみ。

文字列と、文字、の違いを確認してみてください。
その上で、文字の比較と文字列の比較の違いも。文字の比較だけなら関数は不要のはずです。

投稿2016/08/24 08:57

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

strcmp(s[i],o)s[i]がアドレスではないからですね。
&s[i]とすればエラーにはならないと思いますが、想定通りの動きではないと思います。
iは入力文字列の長さなので、常に入力文字の一つ先の領域を指すことになります。
例えば、okと入力した場合。
s[0]='o'
s[1]='k'
となり、strlenの結果は2です。
s[2]は値が入ってないので不定値です。

投稿2016/08/24 07:50

ttyp03

総合スコア16998

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

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

0

こんにちは。

実行できます? ご提示のソースではコンパイル・エラーになる筈です。
if(strcmp(s[i],o)==0)if(strcmp(s,o)==0)の間違いでは?

投稿2016/08/24 07:40

Chironian

総合スコア23272

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

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

takepanman

2016/08/24 07:40

N文字目だけ判定したいのですが、
Chironian

2016/08/24 08:42

N文字目のNにはどんな値を与えるのですか? 文字列の長さをそのままNに与えると、文字列の終わり+1を指すので常に0になります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問