c语言中通过减去字符的ASCII码来更改字符

c语言中通过减去字符的ASCII码来更改字符,c,ascii,C,Ascii,我正在为我的c语言学习做一些弦乐工作坊。有一个问题,当您要求用户输入时,比如说“bob”,代码会降低其ASCII代码,使其变为“ana”。我不知道该怎么做。会是这样吗 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];

我正在为我的c语言学习做一些弦乐工作坊。有一个问题,当您要求用户输入时,比如说“bob”,代码会降低其ASCII代码,使其变为“ana”。我不知道该怎么做。会是这样吗

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码转换成字母?或者有没有更好的方法

您想要:

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

如果我要打印它,它只会给我ASCII码

这只意味着您没有正确打印它。这应该起作用:

printf("orig: %s, transformed: %s\n", orig, test);
你想要:

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

如果我要打印它,它只会给我ASCII码

这只意味着您没有正确打印它。这应该起作用:

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

在C语言中,
char
是一种整数类型。不需要在代码和字母之间转换:字母就是代码。例如,在ASCII系统上,
'a'==97


换句话说,您只需执行
str[i]--
直接(假设您的平台使用ASCII)。

在C中,
char
是整数类型。不需要在代码和字母之间转换:字母就是代码。例如,在ASCII系统上,
'a'==97


换句话说,您只需执行
str[i]--
直接(假设您的平台使用ASCII)。

变量声明中没有
a[]
。请把你真正编译的代码贴出来。另外,为什么要将
str
设置为
char
数组,而
test
设置为
int
数组?
i
未初始化。您还没有终止
测试
数组(假设您的真实代码打印了它)。“如果我打印它,它只会给我ASCII代码,而不是与之相关的字母。”请准确地告诉我们您是如何打印的。还显示一个包含输入和输出示例的运行。变量声明中没有
a[]
。请把你真正编译的代码贴出来。另外,为什么要将
str
设置为
char
数组,而
test
设置为
int
数组?
i
未初始化。您还没有终止
测试
数组(假设您的真实代码打印了它)。“如果我打印它,它只会给我ASCII代码,而不是与之相关的字母。”请准确地告诉我们您是如何打印的。还显示了一个包含输入和输出示例的运行。谢谢,也来自下面的帖子的帮助,我不需要担心整个转换的事情。谢谢,也来自下面的帖子的帮助,我不需要担心整个转换的事情。谢谢,我不知道你不必担心转换什么的,帮了你大忙,不知道你不用担心转换什么的,帮了你大忙