Как я могу изменить индекс значений массива с индексами, которые являются нулевыми
Я смог сделать это с массивом из 2 индексов, но когда у меня есть массив из 3, он изменяет только индекс одного значения, а когда у меня есть 9 индексов, моя проверка становится тревожной.
Я пытаюсь что-то вроде этого при вводе 11 в массиве 3 для получения 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;
}
1 ответ
entrySegments
локальная переменная внутри validateCharAmount
функция.
Вы не можете вернуть его вызывающей стороне, потому что его жизнь заканчивается, когда заканчивается функция.
Для этого вы можете использовать функцию malloc & co.
более того entrySegments[charAmount]
адрес массива за пределами. Последний доступный элемент entrySegments[charAmount-1]
,