操作主外部的阵列

时间:2015-10-20 05:14:54

标签: c pointers segmentation-fault

我正在尝试编写一个简单的加密程序(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++;
    }
}

1 个答案:

答案 0 :(得分:3)

C中的字符串文字,如"pipi" 只读,尝试修改此类字符串将导致未定义的行为

如果要修改字符串,请使用数组:

char instructions[] = "pipi";