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

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

 詳しくはこちら



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

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


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

No.18730

空の文字列を判断するには
投稿者---kazuya(2004/12/15 10:59:02)


はじめまして。今回c言語で電卓を作っております。
第一項目、演算子、第二項目と入力していくのですが
第一項目が未入力の場合エラーを出して再入力としたいのですが
空の文字列が入力されたときの処理がうまくできません

if(*s== ' ')printf("エラー");

というふうにしているのですが
これでは空の文字列を判断できませんでした。
どのようにすれば未入力を判断できるのでしょうか?


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:空の文字列を判断するには 18732 monkey 2004/12/15 11:08:53


No.18732

Re:空の文字列を判断するには
投稿者---monkey(2004/12/15 11:08:53)


>空の文字列が入力されたとき

「空きの文字列が入力されたとき」にsに対してどのような処理を行っていますか?
それが分からないと、解決方法は導けません。


この投稿にコメントする

削除パスワード

No.18733

Re:空の文字列を判断するには
投稿者---kazuya(2004/12/15 11:46:48)


>>空の文字列が入力されたとき
>
>「空きの文字列が入力されたとき」にsに対してどのような処理を行っていますか?
>それが分からないと、解決方法は導けません。


char x[255];

int main{
for(;;){
printf("数値を入力 :");
gets(x);
if(check(x))
printf("エラー\n");
else break;
}
}

check(s) char *s;{
while(*s){
if(*s== ' ')printf("エラー");
if( *s=='.' && *s=='-' && *s<'0' || *s>'9' ) return -1;
s++;
}
return 0;

}
と言うように、数値以外はエラーが出るようにしています。
空の文字列の部分がうまくできません。


この投稿にコメントする

削除パスワード

No.18734

Re:空の文字列を判断するには
投稿者---monkey(2004/12/15 12:22:52)


何も入力されなかったときは文字列の先頭に終端文字'\0'が入るから、
それでチェックすれば良いでしょう。
その他こまごまと修正、及び現代風のコードに直したもの:

#include <stdio.h>

int check( char* s );

int main( void )
{
    char x[255];

    for(;;){
        printf("数値を入力:");
        gets(x);

        if( !check( x ) ){
            printf("エラー\n");
        }
        else{
            break;
        }
    }
    return 0;
}

int check( char* s )
{
    if( *s == '\0' ){
        printf( "空の文字列:" );
        return 0;
    }

    while( *s ){
        if( *s != '.' && *s != '-' && ( *s < '0' || *s > '9' ) ){
            printf( "数値でない:" );
            return 0;
        }
        s++;
    }

    return 1;
}



この投稿にコメントする

削除パスワード

No.18736

Re:空の文字列を判断するには
投稿者---monkey(2004/12/15 13:29:32)


もしかして「空の文字列」と「空白文字」を混同しているのかな?
面倒だから空の文字列と空白のどちらもエラーにしておこう。

int check( const char* s )
{
    if( *s == '\0' || *s == ' ' ){
        printf( "空の文字列又は空白:" );
        return 0;
    }
    ...
}



この投稿にコメントする

削除パスワード

No.18745

Re:空の文字列を判断するには
投稿者---kazuya(2004/12/15 17:07:19)


monkey様ありがとうございました。
きちんと実行されました。
自分でも'\0'でできると思ったのですが
自分の作ったプログラムではスルーしていました。
また一つ勉強になりました。
ありがとうございました。


この投稿にコメントする

削除パスワード

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