Как я могу изменить индекс значений массива с индексами, которые являются нулевыми

Я смог сделать это с массивом из 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],

Другие вопросы по тегам