如何在C中打印向量

Torkemada:

我有三个不同的向量,里面有不同城镇的名称:

V_NombrePueblos listTown1={"Abrera","Granollers","Cardedeu","Manresa","Martorell"};
V_NombrePueblos listTown2={"Astorga","Benavente","Bembibre","Camarzana","Ferrol"};
V_NombrePueblos listTown3={"Arteijo","Betanzos","Cariño","Cedeira","Cerdido"};

用户告诉我矢量的数量和打印城镇的位置。我认为在使用内部带有开关的功能时可以做到这一点:

typedef char nameList[8];

void returnTown(int listTown, int position){

  nameList numList;

  if (listTown==0){
     strcpy(numList, "listTown1");
  }

  if (listTown==1){
strcpy(numList, "listTown2");
 }

  if (listTown==2){
    strcpy(numList, "listTown3");
  }

  switch (position){

         case 1:
         printf("%s", numList[0]);
         break;

         case 2:
         printf("%s", numList[1]);
         break;

         case 3:
         printf("%s", numList[2]);
         break;

         case 4:
         printf("%s", numList[3]);
         break;

         case 5:
         printf("%s", numList[4]);
         break;

但是当我尝试打印示例时: returnTown(0,1)

控制台什么也不显示,使用之前的代码,控制台应该显示“ Abrera

问题是在printf中插入了开关,

如果我放:

printf("%s",listTown1[0] ) 代码显示“ Abrera”很好,但是我需要像varName一样传递向量的名称,因为有时是listTown1,有时是listTown2或listTown3 ...

任何想法?谢谢

MikeCAT:

复制变量名称并不意味着引用变量。

要引用变量,应使用指针。

您将需要这样的东西:

void returnTown(int listTown, int position){

  V_NombrePueblos* numList;

  switch (listTown){
    case 0: numList = &listTown1; break;
    case 1: numList = &listTown2; break;
    case 2: numList = &listTown3; break;
    default: return;
  }

  if (1 <= position && position <= 5){
    printf("%s", (*numList)[position - 1]);

(此功能的其余部分未显示,因为我尊重原始代码段)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章