初心者なのでくだらない質問かもしれないのですが、
getsで数字を入力してatoiでint型に変換するソースを書きたいのですが、
数字以外の文字列の入力があった場合はその文字列は無視して(break、exit等)
数字の文字列の入力の場合にはint型に変換させたいのですが、
どうすればいいのでしょうか。
できればソースを書いてくれるとわかりやすいのですが、よろしくお願いします。
こんな感じでしょうか?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
void main()
{
char buf[10]; // 入力された文字列を格納する変数
int num = 0; // 入力された文字列を数値として保存する変数
int flag = 0; // 入力された文字列が文字列か数値かの判別をする変数
int i; // 入力された文字列分まわす変数
while( 1 )
{
gets( buf ); // 入力された文字列を格納する
num = strlen(buf); // 入力された文字列の長さを得る
// 入力された文字列分ループ
for( i=0; i<num; i++ )
{
if( isalpha(buf[i]) )
{ // 文字列の中に一文字でも数値以外の文字があった場合
flag = 1;
}
}
// 全て数値の場合
if( flag == 0 )
{
num = atoi(buf);
printf("入力された数字は %d です。\n",num);
}
// 文字列の中に一文字でも数値以外の文字があった場合
else
{
printf("数字のみを入力してください。\n");
flag = 0;
}
}
}
タブが効かなかった・・・
Kya-さん、有難うございます。
非常にわかり易かったです。
ツイート | ![]() |