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



我目前正在为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] != ''; 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!但我找不到错误。

这可能与未签名的字符*有关,但我无法使其正常工作。有人可以帮忙吗?

仅供参考 -> 我们必须使用无符号字符*!当然还有指针!

谢谢:)

您正在尝试修改字符串常量。取代

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

char array[] = "Hello";

最新更新