2015-11-02 50 views
-3

爲了解決我在創建可以加密和解密字符的字符串(輸入)的程序時遇到的問題,我決定創建另一個名爲「char passb [81]」的數組「在c中使用&符號

這個新數組的目的是存儲輸入的相應大寫字符。這些字符將被用於我的程序的其他部分。我已經包含下面的代碼。

int plength; 
char pass[81]; 

printf("Please enter passphrase: \n"); 
scanf("%s", &pass); 
plength=("%d", strlen(pass)); 

{ 
char passb[81]; 
int p; 
for (p=0; p<plength; p++) 
{ 
    if(pass[p] >= 97 && pass[p] <= 122) 
      { 
      return((pass[p]-32), &passb); 
      } 
    else if (pass[p] >= 65 && pass[p] <= 90) 
      { 
      return((pass[p]), &passb); 
      } 
} 
printf("\n"); 
} 

當我嘗試編譯我的程序,我得到了以下錯誤消息:

test2.c: In function ‘main’: 
test2.c:50:6: warning: return makes integer from pointer without a cast 
    return((pass[p]-32), &passb); 
^
test2.c:50:6: warning: function returns address of local variable [-Wreturn- local-addr] 
test2.c:54:6: warning: return makes integer from pointer without a cast 
    return((pass[p]), &passb); 
^
test2.c:54:6: warning: function returns address of local variable [-Wreturn-local-addr] 

我能做些什麼來解決這個問題呢?任何捐款和迴應將不勝感激。

+0

爲什麼你想使用'return'作爲功能? – Linus

+0

它看起來像你試圖返回2個值('返回((通過[p] -32),&passb);')這是沒有意義的C。 – hexasoft

+1

我不太明白你想要做什麼'return((pass [p] -32),&passb);'...是否返回你定義的函數?如果不是,那麼這條線不會做任何你認爲它所做的事情。 –

回答

1

你不需要return語句出現,只是一個任務:

if(pass[p] >= 97 && pass[p] <= 122) 
{ 
    passb[p] = pass[p]-32; 
} 
else //don't need this either if (pass[p] >= 65 && pass[p] <= 90) 
{ 
    passb[p] = pass[p]; 
} 

所有這一切都可以替換爲:

passb[p] = toupper(pass[p]);