在 C 中使用指针反转字符串(必须使用 unsigned *char)

reverse a string using pointers (have to use unsigned *char) in C

我目前正在为 Uni 做作业。

任务是在单独的函数中反转字符串。函数名是这样给出的:

void string_rev(unsigned char *str);

我的解决方案如下所示:

void string_rev(unsigned char *str){

    int length = 0;
    int counter = 0;
    unsigned char *endptr = str;   

    for (int i = 0; str[i] != '[=10=]'; i++)  //getting length of string
        length++;

    for (int i = 0; i < length; i++)     //putting endptr to end of string
        endptr++;

    while (counter < length/2){      //switch values from start to end until half of string
        char temp = *str;
        *str = *endptr;
        *endptr = temp;
        str++;
        endptr--;
        counter++;
    }


    for (int i = 0; i<length; i++){
        printf("%c", *str);
        str++;
    }

}


int main (void){


    char *array = "Hello";
    unsigned char *ptr = (unsigned char*)array;


    string_rev(ptr);


    return 0;

}

我得到的错误是总线错误 10!但是我找不到错误。

它可能与 unsigned char* 有关,但我无法正常工作。有人可以帮忙吗?

仅供参考 -> 我们必须使用 unsigned char*!当然还有指点!

谢谢:)

您正在尝试修改字符串常量。替换

char *array = "Hello";   // Not an array.

char array[] = "Hello";