2015-10-20 91 views
0

我想寫一個簡單的加密程序(凱撒密碼),我遇到了一個障礙。對於來自Java最初的C和指針的世界,我相對陌生。操作主陣列

每當我運行下面的代碼,它會給我錯誤信息分段錯誤並終止。

我已經對這個意思做了一些解讀,但我仍然不完全理解它,或者我的代碼有什麼問題,或者如何解決這個問題。

如果你可以幫助任何那些將不勝感激。用C

#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

我要投票關閉這個問題作爲題外話,因爲它通過R'ing FM輕易地回答。 –

+0

R'ing FM?什麼? –

回答

2

字符串文字,就像"pipi"讀,試圖改變這樣的字符串會導致未定義行爲

如果要修改字符串使用數組:

char instructions[] = "pipi"; 
+0

我覺得很愚蠢。謝謝一堆。 –