我试图从一个名为的函数返回一个数据结构,urlTokener
其中一个成员是类型数组,另一个成员char*
是 int。当我在函数中打印数组的值时,urltokener
我得到了正确的类型,但是我看到在使用返回的数据结构的主函数中,数组不包含正确的值,因为输出不正确(不是与函数中的相同)。似乎该函数没有正确返回数据结构。您能否检查并说出我在以下代码中做错了什么?
#include <string.h>
#include <stdio.h>
struct tokenDetail
{
char* theArray[256];
int sizeOfArray;
};
tokenDetail urlTokener(const char *,char* );
void main()
{
// String to be splitted.
const char* url="/v1/AUTH_abb52a71-fc76-489b-b56b-732b66bf50b1/images?limit=1000&delimiter=/&format=xml" ;
tokenDetail newdetails;
newdetails=urlTokener(url,"?");
for (int i=0;i<newdetails.sizeOfArray;i++)
{
printf("This is in main where size is %d and the value %s\n",newdetails.sizeOfArray,newdetails.theArray[i]);
}
}
tokenDetail urlTokener(const char* urlLine,char* delimiter)
{
char urlArray[256];
strncpy(urlArray, urlLine, sizeof(urlArray));
tokenDetail details;
unsigned int index = 0;
details.theArray[index] = strtok(urlArray, delimiter);
while(details.theArray[index] != 0)
{
printf("This is in function %s\n",details.theArray[index]);
++index;
details.theArray[index] = strtok(0, delimiter);
}
for (int i=0;i<index;i++)
{
printf("This is in function 2nd time %s\n",details.theArray[i]);
}
details.sizeOfArray=index;
return details;
}
请注意:我是为 c++ 做的,但我不允许(给我这个任务的人)使用命名空间 std 和库字符串。这就是代码类似于 C 的原因。由于这个限制,我很困惑是标记它 C 还是 C++。所以我在 c 和 c++ 中都标记了它。也许你可以自己决定。