为什么 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"
.
初始化
#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"
.