Maison  >  Questions et réponses  >  le corps du texte

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

一个修改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;
    
}

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

请了解的朋友看看, 谢谢

巴扎黑巴扎黑2765 Il y a quelques jours618

répondre à tous(4)je répondrai

  • 迷茫

    迷茫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;    
    }

    répondre
    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);

    répondre
    0
  • 伊谢尔伦

    伊谢尔伦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;   
    }

    répondre
    0
  • 怪我咯

    怪我咯2017-04-17 15:06:07

    我也来补充一点

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

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

    répondre
    0
  • Annulerrépondre