2012-04-11 231 views
0

对于我的任务,我必须在屏幕上打印数字并将它们解码为它们的特定字母。我在这段代码中只使用了字母a-l,为了保持简单,我可以理解它。使用数组将数字解码为字母

我遇到的问题是,例如,当我把数字0对应的第一个入口数组是a,它将取出a和打印b-l。

我该如何做到这一点,如果我把数字0,代码将打印只有一个屏幕?

#include <stdio.h> 

int main() 
{ 
char code[] = "abcdefghijkl"; 
int i, j, k; 
printf("how many letters does your code contain?: "); 
scanf("%d", &j); 
for(i=0; i<j; ++i){ 
    printf("enter a number between 0 and 11\n"); 
    scanf("%d", &k); 
    printf("%s\n", &code[k]); 
} 
} 

回答

4

你只打印在那个位置上的字符,所以更改

printf("%s\n", &code[k]); 

printf("%c\n", code[k]); 

您也应该检查你读入k值> = 0 & &否则,您将访问超出范围的数组。

+0

我想,并得到以下错误: code.c:12:3:警告:格式 '%C' 期望类型的 'INT' 参数,但参数2具有输入' int *'[-Wformat] – user1304516 2012-04-11 09:19:22

+0

@ user1304516然后您发布的代码与您正在编译的代码不同。 – nos 2012-04-11 09:20:28

+0

@ user1304516:打印时还需要删除'&'? – Naveen 2012-04-11 09:21:21

0

%s格式说明符用于打印字符串,您需要使用%c说明符将字符打印到屏幕上。

0

代替printf("%s\n", &code[k]);