我能夠做到這一點與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;
}
你正在返回一個指向'validateCharAmount'中的局部變量的指針。一旦函數返回,所有局部變量就不復存在。指針不再有效。 –
如果我有一個2的數組,它返回值就好... –
不,它不好,它只是*似乎*喜歡它。未定義的行爲(這是你所擁有的)包括看起來可以工作的可能性。 –