2011-02-14 114 views
0

我有这样的:如何显示一个数组

int i, j, w; 
char *array[50]; 

int main() 
{ 
    array[1]= "Perro"; 
    array[2]= "Gato"; 
    array[3]= "Tortuga"; 
    array[4]= "Girafa"; 
    array[5]= "Canario"; 
    array[6]= "Rata"; 
    array[7]= "Leon"; 
    array[8]= "Tigre"; 
    array[9]= "Rinoceronte"; 
    array[10]= "Mosquito"; 
    for (i=1; i<11; i++) 
    { 

     printf("El elemento %i es %s \n", i, array[i]); 
    } 
    printf("Escoja el elemento deseado"); 
    scanf("%i", &w); 

    int c; 
    scanf("%i",&c); 
    return i; 
} 

现在,我想是这样的:输出(“所需的元素%C,数组[W]);但它失败了,为什么

回答

1

不打印的朋友的名字(字符串)作为字符(%c),使用%s

此外,在C开始在数组索引0,使他们从1开始,反而是奇怪的,可能更容易迷惑自己,进入过去的最后。

2
printf("Desired Element %c", array[w]); 

会尝试打印一个字符(%c),但由于array [w]包含一个字符串,所以会失败。

尝试使用%S代替:

printf("Desired Element %s", array[w]); 
0

%c元素在你的调试字符串打印字符。如果你想打印字符串尝试:

printf("Desired Element %s", array[w]); 
1

可能是因为它不是%c%s字符串

printf("Desired Element %d\n", array[w]);

不要忘了请检查是否w是有效的。

0

使用printf("Desired Element %s, array[w])而不是%c。您正在打印一个字符串,而不是一个字符。

0

程序中有很多古怪的东西。这是一个清理版本。

#include <stdio.h> /* necessary for printf/scanf */ 

#define ARRAY_LENGTH 10 /* use a constant for maximum number of elements */ 

int main() 
{ 
    /* Declare all variables inside main(), at the very top. Nowhere else. */ 
    int i; 
    int desired; /* use meaningful variable names, not x,y,z,etc */ 
    char *array[50]; 


    array[0]= "Perro"; /* arrays start at index 0 not 1 */ 
    array[1]= "Gato"; 
    array[2]= "Tortuga"; 
    array[3]= "Girafa"; 
    array[4]= "Canario"; 
    array[5]= "Rata"; 
    array[6]= "Leon"; 
    array[7]= "Tigre"; 
    array[8]= "Rinoceronte"; 
    array[9]= "Mosquito"; 

    for (i=0; i<ARRAY_LENGTH; i++) /* keep the loop clean */ 
    { 
     printf("El elemento %i es %s\n\n", i+1, array[i]); /* instead, add +1 while printing */ 
    } 

    printf("Escoja el elemento deseado: "); 
    scanf("%i", &desired); 
    getchar(); /* discard new line character somehow */ 

    printf("El elemento %i es %s\n", desired, array[desired-1]); 



    getchar(); /* wait for key press before exiting program */ 
    return 0; /* always return 0 */ 
}