为什么这个字符串通过指针访问会导致段错误?

时间:2021-04-19 18:13:03

标签: c pointers

尝试解决 projectlovelace.net 上的问题。我不明白为什么我不能通过指针赋值,就好像它是一个数组一样。我认为这是可能的。

自从我用 C 编码以来已经有一段时间了,所以我确信有一个明显的明显原因。 (问题要求我返回字符串并更改字符串,以防万一。)

#include <stdio.h>
#include <string.h>

char* rna(char* dna) {
    size_t i, len = strlen(dna);
    char rna[len + 1];

    rna[len] = '\0';

    for(i = 0; i < len; i++){
        char letter = dna[len - 1 - i];
        if(letter == 'T')
            letter = 'U';
        rna[i] = letter;
    }

    // problem is here.
    for(i = 0; i < len; i++)
        dna[i] = rna[i];

    return dna;
}

int main(void){

    char *dna = "CCTAGGACCAGGTT";
    printf("Input DNA: %s\nOutput RNA: %s\n", dna, rna(dna));
    return 0;
}

即使使用 dna[0] = 'X' 也会导致段错误。

0 个答案:

没有答案
相关问题