ショッピングモール  


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

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

 詳しくはこちら



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

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


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

No.3118

入力された文字列の文字数を表示させるには
投稿者---アップル(2004/11/30 21:44:05)


題名のとおりに表示させたいんですが。。。
自分でやってみたところ

#include <stdio.h>

int my_strlen(int *p);

main(void)
{
    char moji[256];
    int cnt;

  printf("空白を入れずに英数字で文字列を入力してください。\n");
  scanf("%s",moji);
  cnt=my_strlen(moji);
  printf("入力された文字列 %s の文字数は %d です\n",moji,cnt);
}

    int my_strlen(int *p){
    int cnt=0;
    while(*p!='\0'){
    *p++;
    cnt++;
    }
    return cnt;
}
とやってみたんですが・・・
'int' 型は 'int *' 型に変換できない(関数 main() )
パラメータ 'p' は int * 型として定義されているので char は渡せない(関数 main() )
とエラーがでます。
どなたか分かる方、教えてください。
お願いします。



この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:入力された文字列の文字数を表示させるには 3119 nop 2004/11/30 21:48:07
<子記事> Re:入力された文字列の文字数を表示させるには 3120 RiSK 2004/11/30 22:18:02
<子記事> Re:入力された文字列の文字数を表示させるには 3132 アップル 2004/12/01 22:58:29


No.3119

Re:入力された文字列の文字数を表示させるには
投稿者---nop(2004/11/30 21:48:07)


>int my_strlen(int *p);
>int my_strlen(int *p){

int my_strlen(char *p);
int my_strlen(char *p){


# なぜ、引数を「int」にしたのでしょうか?


この投稿にコメントする

削除パスワード

No.3120

Re:入力された文字列の文字数を表示させるには
投稿者---RiSK(2004/11/30 22:18:02)


nop さんがおっしゃることを考えれば今回の問題は解決できると思います。

私は(いつも通り)細かい指摘を (^^;

> main(void)
は int main(void)
にして最後に
return 0;
しましょう。

> *p++;
* 演算子を使う意味がありません。
*p を評価し,その値を捨て,pをインクリメントする
という動作をします。



この投稿にコメントする

削除パスワード

No.3122

Re:入力された文字列の文字数を表示させるには
投稿者---アップル(2004/12/01 00:38:35)


すみません。。ありがとうございます。

main(void)と最後のreturn cntはそのままでできませんか??
そこは変えないで他のとこを直して実行したいんです。すいません。。


この投稿にコメントする

削除パスワード

No.3123

Re:入力された文字列の文字数を表示させるには
投稿者---ぽこ(2004/12/01 00:45:48)


>main(void)と最後のreturn cntはそのままでできませんか??
>そこは変えないで他のとこを直して実行したいんです。すいません。。

nopさんの指摘箇所を直して、他に不都合な事があったのですか?


この投稿にコメントする

削除パスワード

No.3124

Re:入力された文字列の文字数を表示させるには
投稿者---RAPT(2004/12/01 01:18:04)


mojiは、char[256]型なのに対し、my_strlenの引数は int* 型になって
いるため、引数の型が異なっています。

main(void) と、return cnt; とは指している関数が異なっていますが、
何か勘違いをしていませんか?

# main(void)でコンパイルが通るのであれば、標準Cとはいえないかと。



この投稿にコメントする

削除パスワード

No.3128

Re:入力された文字列の文字数を表示させるには
投稿者---RiSK(2004/12/01 16:30:29)


>main(void)と最後のreturn cntはそのままでできませんか??
>そこは変えないで他のとこを直して実行したいんです。

できるでしょ? 試したの?
# それに return cnt; については何もいっていませんよ。

私は

> nop さんがおっしゃることを考えれば今回の問題は解決できると思います。

と言いました。


本題とはずれているので

> 私は(いつも通り)細かい指摘を (^^;

って言ったのですが,何か勘違いさせてしまったようですね。(^^;;


○よければ以下に答えてください。

>そこは変えないで他のとこを直して実行したいんです。

1.この理由は何でしょうか?
ex.
1 問題にそう書いてあった
2 main 関数は main(void) と書くように本に書いてあった
3 main 関数は main(void) と書くように先生/教授にそう教わった
4 その他


この投稿にコメントする

削除パスワード

No.3129

Re:入力された文字列の文字数を表示させるには
投稿者---Hermit(2004/12/01 17:22:45)


>main(void)と最後のreturn cntはそのままでできませんか??
>そこは変えないで他のとこを直して実行したいんです。すいません。
一応変えてません。指摘部分のみ変更すると、こうなります。

#include <stdio.h>

int my_strlen(char *p); /*char * に変更*/

main(void)/*普通は int main()*/
{
    char moji[256];
    int cnt;

    printf("空白を入れずに英数字で文字列を入力してください。\n");
    scanf("%s",moji);
    cnt=my_strlen(moji);
    printf("入力された文字列 %s の文字数は %d です\n",moji,cnt);
    return 0; /* 警告が出るので追加*/
}

int my_strlen(char *p) /* char * に変更*/
{
    int cnt=0;
    while(*p!='\0')
    {
        p++; /*元は*p++;*/
        cnt++;
    }
    return cnt;
}




この投稿にコメントする

削除パスワード

No.3132

Re:入力された文字列の文字数を表示させるには
投稿者---アップル(2004/12/01 22:58:29)


みなさん、いろいろとお答えいただいてありがとうございます!
実はこれ学校の課題だったんですが・・・。
今日締め切りだったので一応解決しました。
ありがとうございます。
main(void)を変えないでというのは、先生にその書き方しか習ってないのでということでした。。すみません。。。


この投稿にコメントする

削除パスワード

No.3134

Re:入力された文字列の文字数を表示させるには
投稿者---RiSK(2004/12/01 23:42:48)


>main(void)を変えないでというのは、先生にその書き方しか習ってないのでということでした。。

その先生の C言語の知識はあやしいです。
# って私が言えたものでもないですが。

だれがなんと言おうと
int main(void)
{
  return 0;
}
とすべき。


この投稿にコメントする

削除パスワード

No.3136

Re:入力された文字列の文字数を表示させるには
投稿者---RAPT(2004/12/02 00:09:09)


標準Cでは、main()関数のプロトタイプは下記のいずれかのみ許されます。
int main(void);
int main(int ,char**);

関数の型を省略するとint型を指定したかようにみなす、というのは
もうカビが生えてる古〜いC言語の仕様で、今は認められていません。



この投稿にコメントする

削除パスワード

No.3143

Re:入力された文字列の文字数を表示させるには
投稿者---Hermit(2004/12/02 09:22:40)


>関数の型を省略するとint型を指定したかようにみなす、というのは
>もうカビが生えてる古〜いC言語の仕様で、今は認められていません。

もう認められなくなったんですか?
古い時代しか知らないのですが(^^;
bcc32 Ver5.5 や、cl Ver13 あたりではコンパイルできるようですが。
C99 ではなさそうですよねこの二つは。


この投稿にコメントする

削除パスワード

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




掲示板提供:Real Integrity