如何更改索引为null的数组值的索引

时间:2017-01-24 15:36:43

标签: c arrays validation arrangeoverride

我能够使用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;
}

1 个答案:

答案 0 :(得分:1)

entrySegmentsvalidateCharAmount函数内的本地范围变量。

您无法将其返回给调用者,因为它的生命在函数结束时结束。

您可以使用malloc & co功能执行此操作。

此外entrySegments[charAmount]解决了数组越界的问题。最后访问的项目是entrySegments[charAmount-1]