c++ - 一个修改c语言字符串的值的小问题

浏览:37日期:2023-04-03

问题描述

一个修改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('%cn',*a);a=a+1; }//希望这个时候变成比如 '3456' 或者 'abcd' 或者这类..return 0; }

应该算是简单的问题...这里我自我检讨基础不好...

请了解的朋友看看, 谢谢

问题解答

回答1:

#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('%cn',*p);*p += 1;p++; }//希望这个时候变成比如 '3456' 或者 'abcd' 或者这类.. printf('a=%s',a); return 0; }回答2:

C 语言的字符串是常量,不能修改。你的意图,可通过字符数组来实现:

char a[] = '1234';for (int i = 0; i < 4; i++) {a[i] += 1;}printf('%sn', a);回答3:

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('%cn',*p);p++; } return 0; }回答4:

我也来补充一点

const char *a = '1234';才是 a 的类型...

其他的 @garfileo @Fallenwood 说的都很好

相关文章: