|
例えば、" 123" とか "123 " とか "12 3" という入力があった場合、
3つ目の様に、空白類文字が途中にあるものだけをエラーにするのが妥当だと思いますが、is〜系でこれに対応するのは結構面倒です。
というわけで私もサンプルを作ってみました。
#include <stdio.h>
#include <stdlib.h>
int setInteger(int *dest, const char *src)
{
char dummy;
return sscanf(src, "%i %c", dest, &dummy) == 1;
}
int main(void)
{
char buf[256];
int i;
fgets(buf, sizeof(buf), stdin);
if ( !setInteger(&i, buf) ) {
fprintf(stderr, "not an int literal\n");
return EXIT_FAILURE;
}
printf("i...%d\n", i);
return EXIT_SUCCESS;
}
|