C言語質問スレ【激初心者】

このエントリーをはてなブックマークに追加
977デフォルトの名無しさん
キーボードから「c」を入力した時に「OK!」、それ以外の時には「NG!」と出力するプログラムはどう書けばいいですか?
978デフォルトの名無しさん:2005/12/04(日) 16:02:01
if( キーボードから入力された文字 == 'c' ) puts("OK!");
else puts("NG!");
979977:2005/12/04(日) 16:17:46
else if文でお願いしますorz

自分ではこう書きましたがダメでした。
#include<stdio.h>
int main(void)
{
  int x;
  scanf("%c",&x);
  if(x=='c'){
   printf("OK!\n");
  }
  else{
   printf("NG!\n");
  }
  return 0;
}
980デフォルトの名無しさん:2005/12/04(日) 16:38:07
>>979
intで宣言して%cで受けるのはおかしいだろがッ
とりあえずchar xに汁
981977:2005/12/04(日) 16:58:59
>>980
出来ました。
でも、「cc」でも「OK!」と出てしまいます。
982デフォルトの名無しさん:2005/12/04(日) 17:25:52
>>981
・・・・scanfが何してるか考えてるか?
983977:2005/12/04(日) 17:30:52
>>982
キーボードから数値を取り込む関数?
すみません。激初心者ですorz
984デフォルトの名無しさん:2005/12/04(日) 17:33:00
985977:2005/12/04(日) 17:42:37
char x;
scanf("%c",&x);
if(a=='c')

この辺が間違ってる様な希ガス
986977:2005/12/04(日) 17:47:33
char x;
scanf("%c",&x);
if(x=='c')

こうか
987デフォルトの名無しさん:2005/12/04(日) 17:48:43
988デフォルトの名無しさん:2005/12/04(日) 17:52:24
char型は文字一文字が入るサイズのデータ型です。所謂1バイト。これは全処理系共通です。
scanfの%cは文字一文字を受け取ることを示します。
つまり

char c;
scanf("%c",&c);

は標準入力からcに一文字入れるということです。
989977:2005/12/04(日) 17:55:26
#include<stdio.h>
int main(void)
{
  char x;
  scanf("%c",&x);
  if(x=='c'){
   printf("OK!\n");
  }
  else{
   printf("NG!\n");
  }
  return 0;
}

ccと入力してもON!にするにはどうしたら?
990977:2005/12/04(日) 17:56:16
↑NG!ですorz
991デフォルトの名無しさん:2005/12/04(日) 18:09:51
>>990
fgetsぐらい使え」
992デフォルトの名無しさん:2005/12/04(日) 18:33:30
#include <stdio.h>
#include <string.h>

int main(void){
char c[3];

fgets(c,sizeof(c),stdin);
if(c[strlen(c)-1]=='\n')
c[strlen(c)-1]='\0';
else{
puts("NG");
return 0;
}

if(!strcmp(c,"c")) puts("OK");
else puts("NG");

return 0;
}

冗長だと思ったら改行文字除去削って比較文字列に改行文字加えれ
993977:2005/12/04(日) 18:40:46
>>991-992
すいません。そこまで習っていません。
習ったのは
printf関数
scanf関数
if文
else if文
for文
等です。
これらで>>977は出来るはずなんだけどなぁ
994デフォルトの名無しさん:2005/12/04(日) 18:48:39
>>993
配列は習った?
習っていないなら2文字以上の入力は考えなくてもいいはずだ
995977:2005/12/04(日) 19:17:21
>>994
習っていません。
996デフォルトの名無しさん:2005/12/04(日) 19:18:19
>>987

でも,そしたら993のような香具師はスルーされるかもな
初心者は2chじゃなくて,K&R読んで勉強汁ってことか
997デフォルトの名無しさん:2005/12/04(日) 19:19:05
>>995は薬師ね
998デフォルトの名無しさん:2005/12/04(日) 19:20:34
>>997
薬師?
999デフォルトの名無しさん:2005/12/04(日) 19:25:37
>>993
これでおk
#include<stdio.h>
int main(void)
{
  char x,y;
  if((scanf("%c%[^\n]%*c",&x,&y)==1)&&(x=='c'){
   printf("OK!\n");
  }
  else{
   printf("NG!\n");
  }
  return 0;
}