通过放入0分割c字符串(段错误)

问题描述 投票:0回答:1

一个非常简单的C程序:我想在字符串的某些点上加上0,以获得子字符串。但是在第一次尝试时,我在执行时遇到了段错误:

#include<stdio.h>
#include<string.h>
int main() {
        char *a = "eens kijken of we deze string kunnen splitten";
        a[4] = '\0'; // this causes the segfault
        char *b = a[5]; // sort of guessed this can't work...
        printf("%s", a);
}

所以主要问题是:为什么要在a[4] = '\0';秒出现段错误,所以我想根据字符串索引以最少的代码分割此字符串...

c split c-strings string-literals
1个回答
1
投票

您正在尝试更改字符串文字。

char *a = "eens kijken of we deze string kunnen splitten";

字符串文字在C中是不可变的。任何更改字符串文字的尝试都会导致未定义的行为。

代替声明字符数组

char a[] = "eens kijken of we deze string kunnen splitten";
© www.soinside.com 2019 - 2024. All rights reserved.