gpt4 book ai didi

c - char * 数组转换为 char *

转载 作者:太空宇宙 更新时间:2023-11-04 01:07:41 25 4
gpt4 key购买 nike

如何从 domain_cx 中的 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;
}

最佳答案

您正在尝试将 char (*) [10] 转换为 char * 只是为了之后可以尝试将其转换回来。更简单的方法是更改​​函数的原型(prototype):

int get_domaine(char* domaine[10])
{
printf("%s ", domaine[0]);
printf("%s ", domaine[1]);
return 1;
}

main 中:

if (get_domaine(domaine_cx))
printf("Ok");

或者,您可能不传递任何大小的数组,而是在其他参数中显式传递大小:

int get_domaine(char* domaine[], int tokens)
{
int i;
for (i = 0; i < tokens; ++i)
printf("%s ", domaine[i]);
return 1;
}

main 中:

if (get_domaine(domaine_cx, 2))
printf("Ok");

如果你真的不能改变原型(prototype),这个邪恶的 Actor 会做的:

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;
}

并且由于数组会衰减为指针,因此您仍然可以做一些简单的事情:

if (get_domaine(domaine_cx))
printf("Ok");

关于c - char * 数组转换为 char *,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19484011/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com