如何在domaine中检索domain_cx中的数据,一旦我在函数get_domaine(...)中我尝试了以下内容,但结果不是预期的结果(0-2而不是0-2 3).这是我的代码
#include <stdio.h>
#include <stdlib.h>
int get_domaine(char * domaine)
{
char (*ptr_dom)[10];
ptr_dom = (char (*)[10]) domaine;
printf("%s ", ptr_dom[0]); // will print
printf("%s ", ptr_dom[1]); // will not print even thought there is data.
return 1;
}
int main(int argc,char * argv[])
{
char *domaine_cx[10];
domaine_cx[0] = "0-2";
domaine_cx[1] = "3";
if(get_domaine((char *)*domaine_cx)) printf("Ok");
return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)
你正试图施展char (*) [10],char *以便你可以尝试将其丢回.更简单的是改变你的函数的原型:
int get_domaine(char* domaine[10])
{
printf("%s ", domaine[0]);
printf("%s ", domaine[1]);
return 1;
}
Run Code Online (Sandbox Code Playgroud)
并在main:
if (get_domaine(domaine_cx))
printf("Ok");
Run Code Online (Sandbox Code Playgroud)
或者,您可能不会传递任何大小的数组并显式传递其他参数中的大小:
int get_domaine(char* domaine[], int tokens)
{
int i;
for (i = 0; i < tokens; ++i)
printf("%s ", domaine[i]);
return 1;
}
Run Code Online (Sandbox Code Playgroud)
并在main:
if (get_domaine(domaine_cx, 2))
printf("Ok");
Run Code Online (Sandbox Code Playgroud)
如果你真的无法改变原型,那么这个邪恶的演员会做:
int get_domaine(char* domaine)
{
char** myEvilPtr = (char**) domaine; // !!! we don't know the size !!!
printf("%s ", myEvilPtr[0]);
printf("%s ", myEvilPtr[1]);
return 1;
}
Run Code Online (Sandbox Code Playgroud)
并且由于数组衰减为指针,在main中你仍然可以做到简单:
if (get_domaine(domaine_cx))
printf("Ok");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
134 次 |
| 最近记录: |