%cと%sの違い

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
hogged
記事: 17
登録日時: 9年前

%cと%sの違い

#1

投稿記事 by hogged » 9年前

大文字と小文字の組み合わせが同じであるかどうかを調べるプログラムを書いているのですが、その時に

コード:

scanf("%c %c", &C, &c);
scanf("%s %s", &C, &c);
のどちらにすればいいのかよくわからなくなりました。
以下が書いたプログラムです。

コード:

#include <stdio.h>
#include <ctype.h>

int main (void)
{
	char C, c, numC;

	scanf("%c %c", &C, &c);
	
	numC = toupper(c); //小文字を大文字へ

	if (C == numC){
		printf("Yes\n");
	}
	else{
		printf("No\n");
	}

	return 0;
}
%sでやると正常に動きません。違いを教えてください。

box
記事: 2002
登録日時: 14年前

Re: %cと%sの違い

#2

投稿記事 by box » 9年前

hogged さんが書きました: %sでやると正常に動きません。違いを教えてください。
%c : 単一の文字
%s : 文字の並び
バグのないプログラムはない。
プログラムは思ったとおりには動かない。書いたとおりに動く。

baby2478nishi
記事: 52
登録日時: 9年前
住所: 兵庫県姫路市

Re: %cと%sの違い

#3

投稿記事 by baby2478nishi » 9年前

http://www.k-cube.co.jp/wakaba/server/format.html

簡単に言えばhttp://oshiete.goo.ne.jp/qa/3027949.htmlここに書いてあるように
誤----------------------------
char c;

scanf("%s", &c);
printf("%s\n", &c);
誤----------------------------

例に上げられている後のプログラムは間違いです。たまたま正しく動いているように見えるだけです。
%sはNull終了の文字列を扱うので、通常は以下のように書きます。

正----------------------------
char str[100];

scanf("%s", str); // strは配列の先頭を示すアドレス
printf("%s\n", str);
正----------------------------
ということです。つまり、%sハイチ文字ごとに保存するのでその分”入れる箱”を用意する必要があります。

閉鎖

“C言語何でも質問掲示板” へ戻る