【掲示板ご利用上の注意】
※題名は具体的に! ※学校の課題の丸投げ禁止! ※ソースの添付は「HTML変換ツール」で字下げ! ※返信の引用は最小限に! ※環境(OSとコンパイラ)や症状は具体的に詳しく! ※マルチポスト(多重投稿)は謹んで! 詳しくはこちら
本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。 守ってくださいね。お願いします。(by管理人)
C言語ソース⇒HTML形式ツール 掲示板2はこちら
何も入力されなかったときは文字列の先頭に終端文字'\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; }
もしかして「空の文字列」と「空白文字」を混同しているのかな? 面倒だから空の文字列と空白のどちらもエラーにしておこう。 int check( const char* s ) { if( *s == '\0' || *s == ' ' ){ printf( "空の文字列又は空白:" ); return 0; } ... }