我正在尝试编写一个简单的加密程序(Caesar cipher),我遇到了麻烦。我对C和指针的世界相对较新,最初来自Java。
每当我运行以下代码时,它都会向我显示错误消息分段错误并终止。
我已经做了一些关于这意味着什么的阅读,但我仍然不完全理解它,或者我的代码有什么问题,或者如何解决这个问题。
如果您可以帮助处理任何非常感激的事情。
#include <stdio.h>
#include <ctype.h>
#include <string.h>
void encrypt(char *input);
int main()
{
char *instructions = "pipi";
encrypt(instructions);
printf("Here are your secret instructions:\n%s\n", instructions);
return (0);
}
void encrypt(char *input) {
while (*input != '\0') {
if (isalpha(*input)) {
*input += 1;
if (!isalpha(*input)) {
*input -= 26;
}
}
input++;
}
}
答案 0 :(得分:3)
C中的字符串文字,如"pipi"
只读,尝试修改此类字符串将导致未定义的行为。
如果要修改字符串,请使用数组:
char instructions[] = "pipi";