←検索窓の楽しみ方
  ショッピングモール  掲示板ランキング


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

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

 詳しくはこちら



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

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


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

No.3790

KB入力値による数字判定
投稿者---あきき(2005/05/25 23:13:25)


他のサイトで以下のプログラムを見つけました。キーボードからの入力値に対しての isdigit関数の引数がなぜ、buffer[0]なのか?bufferではいけない理由は何かを誰か教えてください

/*** question.c ***/
#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>

int main(void)
{
    char buffer[100];

    // キーボードから入力
    fgets(buffer, sizeof(buffer), stdin);

    // 数字が入力されたか?

    if( isdigit(buffer[0]) ){
        // intに変換
        int i = atoi(buffer);

        // 結果出力
        printf("%d\n", i);
    }
    else{
        fputs("数字を入力してください\n", stdout);
    }

    return 0;
}




この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:KB入力値による数字判定 3791 RiSK 2005/05/25 23:21:27
<子記事> Re:KB入力値による数字判定 3793 Blue 2005/05/25 23:40:36


No.3791

Re:KB入力値による数字判定
投稿者---RiSK(2005/05/25 23:21:27)


>他のサイトで以下のプログラムを見つけました。キーボードからの入力値に対しての isdigit関数の引数がなぜ、buffer[0]なのか?bufferではいけない理由は何かを誰か教えてください

isdigit に渡すのは 文字(charないしint型) です。
buffer[0] はchar型ですが,
buffer は &buffer[0] と同じ,つまり char * 型です。

どちらが正しいかは…分かりますね?


この投稿にコメントする

削除パスワード

No.3793

Re:KB入力値による数字判定
投稿者---Blue(2005/05/25 23:40:36)


ついでに言うとisdigitは文字列がすべて数字であるかをチェックするものではないので、
文字列長分、一文字ずつisdigitして確かめる必要があります。

例)
int isdigitstr( const char* p )
{
    while ( *p != '\0' )
    {
        if ( !isdigit( ( int )*p++ ) ) return 0;
    }
    return 1;
}



この投稿にコメントする

削除パスワード

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




掲示板提供:Real Integrity