为什么这会引发段错误?
我已经将我的程序调试到这个位置,这是错误的吗?有人能解释一下为什么吗?
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/