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;
}