在 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";
我目前正在为 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";