2016-12-04 262 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