C While 段错误

标签 c fault

为什么这会引发段错误?

我已经将我的程序调试到这个位置,这是错误的吗?有人能解释一下为什么吗?

char code1[] = "abcdefghijklmnopqrstuvwxyz ";
char code2[] = "bpduhijkaltxwmrzfoysvngeqc ";

void code(char *encode[]){
    char encoded[strlen(encode)];
    strcpy (encoded, encode);
    int i = 0;
    int j = 0;
    while (encode[i] != '\0'){
        while(encode[i] != code1[j]){
            j++;
        }
    encoded[i] = code2[j];
    i++;
    j=0;
}
i=0;
printf("The word is: %s \n", encoded);

}

最佳答案

您没有在结果字符串中包含空字节 '\0'。 C 字符串以 '\0' 字符结尾,该字符不包含在长度中:

char encoded[strlen(encode)+1];
strcpy(encoded, encode);

此外,您还需要检查以确保 encode 中的每个字符也在 code1 中,否则您将访问 code 之外的数据>。您可以添加对 code1[j] == '\0' 的检查并跳过该字符。您还应该查看 strchr 函数来搜索字符,而不是自己执行。

关于C While 段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33661394/

相关文章:

c - 如何处理 "warning: ignoring return value of ‘system’ , "

c - 如何在QNX中找到线程的当前优先级

ios5 - 核心数据 - 打破父上下文的保留周期

css - IE 不会识别不重复?

c - 如何在C中计算x天后的日期

c++ - 使用 pselect 捕获套接字和信号事件

c - 在另一个函数 : Segmentation fault (core dumped) 中使用 strcat

python - 如何在python的服务器代码中指定xmlrpc错误代码

c - 函数 fmax 的隐式声明

cocoa - iPhone核心数据关系故障