【发布时间】:2019-12-18 08:41:45
【问题描述】:
我正在尝试访问在function1 中创建的const char* function2,以便将其用于某些操作。出于多种原因,它必须处于不同的功能中。
我尝试在function2 中使用此代码:
const char* str[1024] = { function1() };
但我没有任何成功。如果我尝试
printf("%s\n", str[1]);
在function2 中,它只打印(null)。
我也尝试过使用malloc,但没有成功。
//main function {it does its thing, it wouldn't interest us}
//function1 {it creates a const char* var[1024];)
//function2 {here I want to use the const char* var[1024]; from function1}
观察:在function1 中,const char* 可以很好地打印它需要打印的内容。
我希望我能找到解决这个问题的方法。感谢您的耐心等待!
稍后编辑代码:
const char* function1()
{
lang = fopen("lang.csv", "r");
int i = 0;
char line[1024];
const char* word[1024];
char num[] = { 1 , 2 };
while (fgets(line, 1024, lang))
{
char* tmp = _strdup(line);
printf("Field 1 would be %s\n", getfield(tmp, num[0])); // NOTE strtok clobbers tmp
word[i] = getfield(tmp, num[0]);
i++;
free(tmp);
}
printf("%s\n", word[1]); //prints successfully
fclose(lang);
return NULL;
}
int function2() {
const char* word[1024] = { function1() };
printf("%s\n", word[1]); // failure, prints (null)
}
【问题讨论】:
-
您描述您尝试过的代码并描述结果。如何发布您尝试过的实际代码。它可能会让您更清楚您要做什么,因为
const char*是一种数据类型 - 您不能“call”一种数据类型,因此完全不清楚您在问什么。大概您只是想访问数组而不是调用它?如果是这样,您希望进行哪种访问 - 读取或写入或两者兼而有之? -
这是一个 X-Y 问题。您正在描述您在您的解决方案中遇到的问题,该解决方案是您未告诉我们的其他问题。描述你真正想要达到的目标,而不是你试图如何实现它。
-
为什么
function1返回NULL? -
@melpomene 道歉,我想说“访问”。我只是很累。
-
@melpomene :很明显他是个新手,但这不是犯罪。回答这个问题是一个教育他的机会,不要因为他不知道而忽视他,不知道他不知道。然而,他可能会澄清这个问题,以便重新开放。就这么简单,他的代码的意图很清楚(足够),即使它在语义上是无意义的。
标签: c arrays string function char