c-在变量参数函数中使用字符串指针



问题因此,正如标题所示,我正在询问是否有方法在变量参数函数中使用stdarg.h进行文本打印。我想到了制作一个可以搜索的callendar,但我遇到了查找/测试输入字符串的问题。如果有任何建议,我将不胜感激。

代码:

void CinemaPrint(int count,...)
{
va_list k;
va_start(k,count);
int i=0;
for(i=1;i<count+1;i++)
{
printf("%d. %snn",i, va_arg(k,int));
}
va_end (k);
char textz[]="xxxxxxxxxxxxxx";
scanf("%s",&textz);
char* pointer=(char*)(&count+1);
for(i=1;i<count+1;i++)
{
if(textz==*pointer)
{
printf("Cinema %s is %d.",*pointer, i);
}
}
}
int main()
{
printf("Hello kino!n");
char text1[]="Cinema City";
char text2[]="Hutnik";
char text3[]="Svetozor";
char text4[]="Lucerna";
char text5[]="Flora3D";
CinemaPrint(5,text1,text2,text3,text4,text5);

return 0;
}

它的作用

Hello kino!
Cinema City
Hutnik
Svetozor
Lucerna
Flora3D
Hutnik //this was inputed from me. After this it ends

我希望它做什么

Hello kino!
Cinema City
Hutnik
Svetozor
Lucerna
Flora3D
Hutnik
Cinema Hutnik is 2.

这里有两个主要问题。

首先,您不能使用char* pointer=(char*)(&count+1);手动迭代变量参数列表。您需要使用不同的va_list实例再次调用va_startva_end。您还应该将参数检索为char *而不是int,以便类型参数类型匹配。

其次,不能将字符串与==进行比较。这只会比较每个人的地址。你需要strcmp才能做到这一点。

char textz[]="xxxxxxxxxxxxxx";
scanf("%s",textz);
va_list k2;
va_start(k2, count);
for(i=1;i<count+1;i++)
{
char *pointer = va_arg(k2, char *);
if(!strcmp(textz,pointer))
{
printf("Cinema %s is %d.",pointer, i);
}
}
va_end(k2);

相关内容

  • 没有找到相关文章

最新更新