c - 替换字符串的单个字符元素 C

标签 c string replace character

<分区>

我正尝试在 C 上做一些非常基础的事情,但我一直遇到段错误。我想要做的就是用不同的字母替换一个单词的字母 - 在这个例子中用 L 替换 l。任何人都可以帮助解释我哪里出错了吗?我认为这应该是一个非常基本的问题,我只是不知道为什么它不起作用。

#include<stdio.h>
#include<stdlib.h>

int main(int argc, char *argv[])
{
    char *string1;

    string1 = "hello";
    printf("string1 %s\n", string1);    

    printf("string1[2] %c\n", string1[2]);
    string1[2] = 'L';
    printf("string1 %s\n", string1);

    return 0;
}

对于我的输出我得到

string1 hello
string1[2] l
Segmentation fault

谢谢!

最佳答案

string1 = "hello";
string1[2] = 'L';

can't change string literals ,这是未定义的行为。试试这个:

char string1[] = "hello";

或者也许:

char *string1;
string1 = malloc(6); /* hello + 0-terminator */
strcpy(string1, "hello");

/* Stuff. */

free(string1);

关于c - 替换字符串的单个字符元素 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9149327/

相关文章:

c - 对数组 C 中的字符串进行排序

c++ - C - 使用 lseek() 获得的不准确的 read() 位置

python - for循环,如果元素不等于值,则替换为空字符串

android - 在 Android 中使用 AUTOINCREMENT 键插入或忽略表

c - scanf 使用空格作为行尾

使用随机数 rand() 计数

python - 如何在 Python 中删除带或不带空格的空行

python - python中的快速、大宽度、非加密字符串散列

text - 使用大量替换对在文本文件中执行大量替换

JavaScript 将\n 替换为 <br/>