-1

2 つのインデックスの配列でこれを行うことができましたが、3 つの配列がある場合は 1 つの値のインデックスのみが変更され、9 つのインデックスがある場合は検証がアラートになります。

011を受け取るために3の配列に11を入力すると、このようなことを試みていますが、101になります。

インデックスをループして値を切り替える 2 番目の関数を見てきました。

int validateInt(int digitAmount);
char* validateCharAmount(int charAmount);

int main(void) {
    do{

        printf("Please enter Student's ID': ");
        studentID=validateInt(3);
    }while(studentID!=0);

    return 0;
}

int validateInt(int digitAmount)
{
    int value;
    char *entrySegments;    
    int index=0;
    char temp;
    entrySegments=validateCharAmount(digitAmount);
    while(index<digitAmount){
        while((entrySegments[index]-48)<0 || (entrySegments[index]-48)>9){
            printf("Invalid Value! Please input an integer: ");
            entrySegments=validateCharAmount(digitAmount);
            index=0;
        }
        value=10*value+(entrySegments[index]-48);
        index++;
    }
    printf("%d",value);
    return value;   
}

char* validateCharAmount(int charAmount){

    char entrySegments[charAmount];
    int index=0;
    entrySegments[0]= NULL;
    entrySegments[charAmount]= NULL;
    scanf("%s",entrySegments);
    while(entrySegments[charAmount]!=NULL){
        printf("You entered too many characters! Please input %d: ", charAmount);
        scanf("%s",entrySegments);      
    }
    while(index<charAmount){
        while((entrySegments[index])==NULL){        
            entrySegments[index]=entrySegments[index-1];
            entrySegments[index-1]=48;
        }
        index++;
    }   
    return entrySegments;
}
4

1 に答える 1