【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※マルチポスト(多重投稿)は慎んで!

 詳しくはこちら



 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.21047

学校の課題
投稿者---超初心者(2005/05/14 03:25:02)


学校の課題で「文字列strの中に,文字cが含まれていれば(複数ある場合には,最も先頭側と する),その文字を返し,含まれていなければ,-1を返す関数 int str_char(const char str[], int c) を作成せよ.」と言う課題が出て下のように書きました。文字が含まれていないときは、-1を返してくれるのですが含まれているときはちゃんとした値が表示されません。たとえば1が含まれていても、最終的には49が表示されてしまいます。どうしてか教えてください。

#include <stdio.h>

int str_char(const char str[], int c);

int main(void)
{
char str[50];
char c[10];

printf("c:");
scanf("%s",c);
printf("str:");
scanf("%s",str);

printf("%d",str_char(str,c[0]));

return 0;
}

int str_char(const char str[], int c){

unsigned int i;

for(i = 0;str[i] != '\0';i++)
if(str[i] == c)return c;


return (-1);
}


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:学校の課題 21048 あかま 2005/05/14 03:52:46
<子記事> Re:学校の課題 21050 あかま 2005/05/14 04:00:21


No.21048

Re:学校の課題
投稿者---あかま(2005/05/14 03:52:46)


内部的に文字は文字コードと呼ばれる数字で表現されます。
文字の'1'は文字コードでは49なので、プログラムは正しい動作をしていると思います。

#include <stdio.h>

int main(){
    
    char c,d;
    
    //文字の'1'を入れて表示させてみる
    c = '1';
    printf("c=%c\n",c);
    
    //数字の49を入れて文字として表示させてみる
    d = 49;
    printf("d=%c\n",d);
    return 0;
}


文字コードはこちらの↓ページで確認してみてください。
http://www9.plala.or.jp/sgwr-t/c_sub/ascii.html


この投稿にコメントする

削除パスワード

No.21050

Re:学校の課題
投稿者---あかま(2005/05/14 04:00:21)


ちなみに、
printf("%d",str_char(str,c[0]));

printf("%c",str_char(str,c[0]));
にすれば数字としてではなく文字として表示されるはずです。

printfとscanfの書式指定はこちらをどうぞ。
http://www9.plala.or.jp/sgwr-t/c/sec05.html


この投稿にコメントする

削除パスワード

No.21067

学校の課題
投稿者---超初心者(2005/05/14 21:42:51)


わざわざプログラム例などを交えて質問に答えていただきありがとうございまた。自分は文字のところがまだ理解不足なのでまた学習しなおそうと思います。本当にありがとうございました(^^


この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧