【问题标题】:Replacing ASCII value of a char in a string in C用C替换字符串中字符的ASCII值
【发布时间】:2015-12-09 01:45:02
【问题描述】:

是否可以在 C 中增加 char 的 ASCII 值?假设我有以下代码

int main(){

    char *a = "This is my test string";

    /* *(a+12) += 21; This isnt going */

    printf("%c = %c\n", *(a+12), *(a+12)+21);

    printf("%s\n", a);  

    return 0;
}

例如,我想要的是将 e 字符增加 21,这将是 z,并使其在该数组中永久存在。所以当我在数组上使用printf 时,它会在那个地方打印z 而不是e

我们将如何处理?

【问题讨论】:

  • 是的,完全一样,但是您不能更改字符串文字。

标签: c ascii


【解决方案1】:

char *a = "This is my test string"; 更改为`char a[] = "This is my test string";

【讨论】:

  • 是的,将它声明为指针使其只是只读的-.- 但是有一个简短的问题,如果它在堆上,那么我仍然可以操作,对吧?
  • 字符数组总是在栈上,而不是这里的堆上。
  • 检查这个 Q 挖掘 char * 和 char[] 初始化之间的差异:stackoverflow.com/questions/1704407/…
  • 是的,我知道我只是想知道动态数组的表现如何?
  • 你可以用同样的方法改变动态数组。例如,char *b = malloc( 100 );memcpy( b, a, strlen(a) + 1);*( b + 12 ) += 21;
【解决方案2】:

改变你的

*a to a[]="This is my test string";

并通过使用

a[12] = a[12] + 21;

你会发现数组的变化;

【讨论】:

  • 谢谢,其他人只是更快:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-13
  • 2019-05-15
  • 2015-02-27
  • 2019-05-09
  • 2021-03-13
  • 2013-06-20
  • 1970-01-01
相关资源
最近更新 更多