2017-04-16 211 views
0

在我的c程序中,我試圖讓通過命令行傳遞的參數轉換爲數字。在我想'a'等於1換句話說,並'z'等於26將CMD行參數轉換爲數字字符

#include <stdio.h> 

int main(int argc, char *argv[]) 
{ 
    int i,j,num; 
    for(i=1; i<argc; ++i) 
    { 
     for(j=0; argv[i][j] != '\0'; ++j) 
     { 
      //printf(":%c", argv[i][j]); 

      if (argv[i][j] >= 'A' && argv[i][j] <= 'Z') 
      { 
       num = argv[i][j] - 'A'; 
      } 
      else if (argv[i][j] >= 'a' && argv[i][j] <= 'z') 
      { 
       num = argv[i][j] - 'a'; 
      } 
      num = num + '0'; 
      printf("%d\n", num); 
     } 
    } 
    printf("\n"); 
    return 0; 
} 

問題是,當我運行此命令:

./encript a 

我希望我的程序返回一個價值,而是我得到這個:

48 
+0

你也許可以讓所有一行通過改變字符使用函數從的#include headerfile降低的原因,然後就減去'一個'。 – starlight

+1

「我想'a'等於1」 - >'num = argv [i] [j] - 'a'+ 1;'。刪除'num = num +'0';' – chux

回答

1

在你的計劃,你這樣做加法:

num = num + '0'; 
printf("%d\n", num); 

這將在計算出的數字上加48(ascii of 0)。

此外,'A'-'A'等於,而不是