首页 > 解决方案 > C 仅用于打印最后一个索引输入

问题描述

我试图在 C 中做一个程序。捕获每个专辑的名称、年龄、专辑编号、名称和歌曲。我没问题,但它只打印最后一张专辑名称。假设我输入了 3 个专辑,“a”、“b”和“c”。它只会打印 c 3 次。它应该是a,b和c。谢谢你。

#include <stdio.h>

int main() {

//variables
int edadCantante;
int x,numeroCanciones[x];
char nombreCantante;
char nombreDiscos[30][x];

printf("Introduzca el nombre del artista: ");
scanf(" %[^\n]",nombreCantante);
printf("Introduzca edad del artista: ");
scanf("%d", &edadCantante);

printf("Introduzca número de discos: ");
scanf("%d\n",&x );
// taking input and storing it in an array
for(int i = 0; i < x; ++i) {
  scanf("%[^\n]%*c", nombreDiscos[i]);

}

printf("Desplegando albumes:\n ");

// printing elements of an array
 for(int i = 0; i < x; ++i) {
  printf("%s\n", nombreDiscos[i]);
}

printf("Número de canciones por album respectivamente:\n ");
for(int i = 0; i < x; ++i) {
      scanf("%d", &numeroCanciones[i]);

}

printf("Desplegando número de canciones:\n ");

// printing elements of an array
 for(int i = 0; i < x; ++i) {
  printf("Número de canciones en album %d = %d\n",i+1,numeroCanciones[i]);
}

return 0;

}

标签: c

解决方案


您需要移动numeroCancionesand的声明nombreDiscos。像这样:

int x;
scanf("%d\n",&x );
int numeroCanciones[x];

但是不要忘记检查返回值scanf以防读取失败。


推荐阅读