2016-12-04 66 views
0

我正在爲我的c學習做一些字符串研討會。有一個問題,你要求用戶輸入,比如說「bob」,代碼是降低它的ASCII代碼,使它變成「ana」。我對如何去做這件事感到失落。它會像通過在c語言中減去ASCII碼來更改字符

int main() { 
    char str[10]; 
    char test[10]; 
    int i; 

    printf("Enter a string: "); 
    scanf("%s", str); 

    while(str[i]!='\0') { 
     test[i]=str[i]; i++; 
    } 
} 

如果我要打印它,它只給我的ASCII碼,而不是與它相關的字母。我如何將ASCII碼轉換爲字母?或者是有它

+1

在變量聲明中沒有'[]'。請[編輯]併發布您編譯的**真實代碼**。另外,爲什麼你將'str'作爲'char'的數組,而'test'是一個'int'的數組? –

+0

'i'未初始化。並且您還沒有終止'test'數組(假設您的真實代碼會打印它)。 –

+1

「如果我要打印它,它只給出ASCII碼,而不是與它相關的字母。」請告訴我們你是如何打印的。同時顯示具有輸入和輸出示例的運行。 –

回答

2

你想要一個更好的方法:

test[i] = orig[i] - 1; 

如果我把它打印出來,只給我的ASCII碼

這只是意味着你是不是印刷它正確。這應該工作:

printf("orig: %s, transformed: %s\n", orig, test); 
+0

謝謝,也從帖子的幫助下,我不必擔心整個轉換的事情。 – OnesQuared

1

在C,char是一個整數類型。不需要在代碼和字母之間進行轉換:字母就是代碼。例如,在ASCII系統'a' == 97上。

換句話說,您可以直接簡單地執行str[i]--;(假設您的平臺使用ASCII)。

+0

謝謝,不知道你不用擔心轉換什麼,不用擔心,大大幫助了 – OnesQuared