我能够使用2个索引的数组执行此操作,但是当我有一个3的数组时,它只更改一个值的索引,当我有9个索引时,我的验证会发出警报。
当我在3的数组中输入11来接收011时,我正在尝试这样的事情,但我得到了101。
我一直在查看我的第二个函数,我在循环索引中切换值。
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;
}
答案 0 :(得分:1)
entrySegments
是validateCharAmount
函数内的本地范围变量。
您无法将其返回给调用者,因为它的生命在函数结束时结束。
您可以使用malloc & co功能执行此操作。
此外entrySegments[charAmount]
解决了数组越界的问题。最后访问的项目是entrySegments[charAmount-1]
。