一个修改c语言字符串的值的问题,改变每一个字符,给ASCII码加上一定数值..试了好几次都没成功...
(注:这里的字符串必须要用char * 且事先无法知道长度 最好也不能包含string头文件)
这是自己测试时候的代码:
#include <stdio.h>
int main(int argc, const char * argv[]) {
// insert code here...
printf("Hello, World!\n");
char* a = "1234";
while(*a!='\0'){
//这里修改字符串的字符的值,给每一个字符的ASCII码加上一定数值
printf("%c\n",*a);
a=a+1;
}
//希望这个时候变成比如 "3456" 或者 "abcd" 或者这类..
return 0;
}
应该算是简单的问题...这里我自我检讨基础不好...
请了解的朋友看看, 谢谢
迷茫2017-04-17 15:06:07
#include <stdio.h>
int main(int argc, const char * argv[]) {
// insert code here...
printf("Hello, World!\n");
char* a = "1234";
char* p = a;
while(*p != '\0'){
//这里修改字符串的字符的值,给每一个字符的ASCII码加上一定数值
printf("%c\n",*p);
*p += 1;
p++;
}
//希望这个时候变成比如 "3456" 或者 "abcd" 或者这类..
printf("a=%s",a);
return 0;
}
伊谢尔伦2017-04-17 15:06:07
C 语言的字符串是常量,不能修改。你的意图,可通过字符数组来实现:
char a[] = "1234";
for (int i = 0; i < 4; i++) {
a[i] += 1;
}
printf("%s\n", a);
伊谢尔伦2017-04-17 15:06:07
char* a = "1234";
这里字符串的内容存储在文字常量区不能改变char a[] = "1234";
这里的字符串在栈上可以改变
#include <stdio.h>
int main(int argc, const char * argv[]) {
// insert code here...
printf("Hello, World!\n"); // wtf?
char a[] = "1234";
char *p = a;
while(*p!='\0'){
*p += 2;
printf("%c\n",*p);
p++;
}
return 0;
}
怪我咯2017-04-17 15:06:07
我也来补充一点
const char *a = "1234";
才是 a 的类型...
其他的 @garfileo @Fallenwood 说的都很好