我有这个:
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;
}
现在我需要这样的东西:printf(“Desired Element%c,array [w]);但是它失败了,为什么?
答案 0 :(得分:2)
printf("Desired Element %c", array[w]);
将尝试打印一个字符(%c),但由于array [w]包含一个字符串,它将失败。
尝试使用%s代替:
printf("Desired Element %s", array[w]);
答案 1 :(得分:1)
不要将朋友姓名(字符串)打印为字符(%c
),请使用%s
。
此外,C中的数组从索引0开始,使它们从1开始,而不是很奇怪,可能会让你更容易混淆自己和访问结束。
答案 2 :(得分:1)
可能是因为字符串不是%c
而是%s
printf("Desired Element %d\n", array[w]);
不要忘记检查w
是否有效。
答案 3 :(得分:0)
调试字符串中的%c
元素打印一个字符。如果要打印字符串,请尝试:
printf("Desired Element %s", array[w]);
答案 4 :(得分:0)
使用printf("Desired Element %s, array[w])
代替%c。你打印的是字符串,而不是字符。
答案 5 :(得分: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 */
}