为什么 C 中的这个小写函数会给我段错误内存错误?

why this lowercase function in C give me segfault memory error?

#include <stdio.h>
#include <string.h>


char* my_downcase(char* param_1) {
   int c = 0;

   while (param_1[c] != '[=10=]') {
      if (param_1[c] >= 'A' && param_1[c] <= 'Z') {
         param_1[c] = param_1[c] + 32;
      }
      c++;
   }
   printf("%s", param_1);
   return param_1;
}

int main(){
    char *r = "ABC";
    char *res = my_downcase(r);

    return 0;
}

我使用 asci 小写 table。但是当我编译 运行 它时,它给了我段错误,为什么?

您的指针r指向一个字符串文字,不允许修改字符串文字。

试试看

char r[] = "ABC";

这将使 r 成为一个您可以修改的普通数组,用字符串 "ABC".

初始化