2014-09-20 126 views
0

我一直試圖讓這個代碼工作來加密*char[]指針數組與ROT13加密。幾個問題:陣列初始化需要大括號

  1. 該程序不編譯。錯誤是:'text':數組初始化需要大括號。
  2. ROT13似乎沒有正常工作。它保存ASCII碼的數字值,而不是與其等價的字母。

這是我的代碼:

void rot13(int numlines, char * text[]){ 
    //printf("%s\n", text); 
    //char encrypted[length(text)]; 

    for (int i=0; text[i]>='\0'; i++){ 
     if (*text[i]>='A' && *text[i]<='Z'){ 
      *text[i]=(((*text[i]-'A')+13)%26 + 'A'); 
     }else if(*text[i]>='a' && *text[i]<='z'){ 
      *text[i]=(((*text[i]-'a')+13)%26 + 'a'); 
     } 
    } 

    printf ("%d\n ",*text); 
} 

int main(){ 
    char text1[]="parliament"; 
    char * text[]=&text1; 
    rot13(10, text); 
} 
+2

那麼,您是否嘗試在初始化過程中使用花括號? (它有問題的行應該是'char * text [] = &text2;') – dyp 2014-09-20 15:41:24

+0

@dyp,'text2'是什麼? – 2014-09-20 15:42:54

+0

@ CoolGuy錯字。當然,它應該是'text1'。 – dyp 2014-09-20 15:46:44

回答

2

char * text[]=&text1;text被聲明爲指針數組以char。因此是一個數組類型。如果不使用花括號進行初始化(例外:字符串文字)。不如把它聲明爲指針指向char

char **text = &text1; 

你應該注意到,在main和函數參數的聲明char * text[]不一樣的。當聲明爲功能參數char * text[]時相當於char **text

+0

@dyp;真正。補充說。 – haccks 2014-09-20 15:50:14