我有三个不同的向量,里面有不同城镇的名称:
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 ...
任何想法?谢谢
复制变量名称并不意味着引用变量。
要引用变量,应使用指针。
您将需要这样的东西:
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] 删除。
我来说两句