#include <stdio.h>
#define IsLowerCase(c) (((c)>='a') && ((c)<='z'))
#define ToUpperCase(s) (IsLowerCase(s)? (s)-'a' + 'A': (s))
int main(void){
char *string = "abcdefghijklmnopqrstuvwxyz";
while(*string != '\0'){
*string = ToUpperCase(*string);
++string;
}
}
警告:ISO C ++禁止将字符串常量转换为'char *'[-Wwrite-strings]
答案 0 :(得分:1)
您的char *string
应该是const char *string
(但它是不可变的);或更好char string[] = ...
。然后声明另一个变量char *s = string;
,并循环和步骤s
而不是string
答案 1 :(得分:0)
char *string = "abcdefghijklmnopqrstuvwxyz";
是一个文字(无法修改),如果您尝试修改它,您将获得undefined behaviour。如果需要可修改的字符串,请分配内存或使用char[]
数组。
这将有助于char string[] = "abcdefghijklmnopqrstuvwxyz";
。现在它应该与你的其余代码一起使用。
您可以在this thread中获得有关您的问题的更多信息。
答案 2 :(得分:0)
问题从这里开始
.navbar-toggle:not(.collapsed) .menustructure{
position: absolute;
width: 100% !important;
padding: 0;
height: 1000px;
}
.navbar-toggle:not(.collapsed) .tl-nav-holder{
width: 100% !important;
height: 100% !important;
}
您将“string”声明为字符类型的指针,但使用“abcdefghijklmnopqrstuvwxyz”初始化它(这是const字符串,将无效)。 为了纠正它,你需要做两件事。
声明类型字符串的变量,例如str,即“string str;” 并用字符串初始化它,即
char *string = "abcdefghijklmnopqrstuvwxyz";
使用string *类型声明指针“string”,即string * string。
用str的地址初始化它,即
"string str = "abcdefghijklmnopqrstuvwxyz";
所以你的最终代码会像这样
string *string = &str;