キーボード入力

キーボード入力(list_3.c)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>

//-----------------------------------------------------------------
int input_int_from_KBD(char *, int *);
int input_10char_from_KBD(char *intitle, char *data);
//-----------------------------------------------------------------

int main()
{
    /* 入力促進支持用 */
    int data;
    char instr[128];
    memset(instr,0,sizeof(128));

    /* int */
    if(!input_int_from_KBD("input integer:",&data))
        printf("input error.\n");
    else
        printf("input data is %d\n",data);

    /* 10char */
    if(!input_10char_from_KBD("input 10char:",instr))
        printf("\ninput error.\n");
    else
        printf("\ninput data is %s\n",instr);
    
    return 0;
}

int input_int_from_KBD(char *intitle, int *data)
{
    int i;
    char instr[128];
    memset(instr,0,sizeof(char)*128);
    // 入力指示
    printf("%s",intitle);
    scanf("%s",instr);
    for(i=0;i<strlen(instr);i++){
        if(!isdigit(instr[i])) return 0;
    }
    sscanf(instr,"%d",data);
    return 1;
}

int input_10char_from_KBD(char *intitle, char *data)
{
    char instr[128];
    memset(instr,0,sizeof(char)*128);
    memset(data,0,sizeof(char)*128);
    // 入力指示
    printf("%s ",intitle);
    scanf("%s",instr);
    strncpy(data,instr,10);
    // 文字列が10文字以内なら正常
    if(strlen(instr) <= 10) return 1;
    else return 0;
}

result
Gami[49]% ./list_3.exe
input integer:ab
input error.
input 10char: murakami

input data is murakami
Gami[50]% ./list_3.exe
input integer:19
input data is 19
input 10char: murakami

input data is murakami
Gami[51]% ./list_3.exe
input integer:20
input data is 20
input 10char: murakami-aki

input error.
Gami[52]%
inserted by FC2 system