我得到了一个段。当我尝试从 char 类型中减去 32 时出现错误(尝试在 C 中转换为小写而不使用 tolower()对于转换值,'32',将其转换为 (char*) 和我能想到的任何其他内容。例如:
char* s1 = "Bob";
if (*s1 >= 97 && *s1 <= 122)
*s1 -= 32;
}
有什么建议吗?
编辑:
按照下面的帮助,还是报错。 (对于这个例子,我只是想把名字的第一个字母改成小写。)这是我正在尝试的:
char* s1 = "Bob";
printf("\n %s before", s1);
// below I call my string length function to get actual size instead of 100
char* temp = malloc(100);
temp = s1;
if (*temp >= 'A' && *temp <= 'Z'){
*temp -= 32;
}
printf("\n%s after", temp);
free(temp);
另外,为什么我需要为已经在内存中的字符串分配内存?
最佳答案
你不能像那样改变文字字符串——它们(通常)在只读内存中。您需要制作字符串文字的可写副本:
char* name = "Bob";
char* s1 = strdup(name);
...
free(s1); // And you also need this to avoid a memory leak!
关于c - 用于从 char 类型中减去的简单 C 语法,小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19910922/