c - 用于从 char 类型中减去的简单 C 语法,小写

标签 c syntax char lowercase

我得到了一个段。当我尝试从 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/

相关文章:

javascript - 带有内部链接的 DOM 菜单 - 语法问题?

c - 我在将 char 变量的值附加到 C 中的字符串时遇到问题

c++ - strcpy_s用于char **和char [] []

c - 在 C 中分配二维字符矩阵的奇数输出

c - 在 C99 中使用检查单元测试框架时出现语法错误

c++ - C/C++ 编译器如何区分 * 运算符(指针、解引用运算符、乘法运算符)的使用?

c++ - 我可以将哪些同步原语用于 clone(2) (C/C++)?

c - 在 C 中处理超过 127 的 char 值

c - 关闭和打开二进制文件时读取它

python - "a:1"不应该是 python 中的语法错误吗?