【发布时间】:2015-03-31 20:53:53
【问题描述】:
我创建了一个名为 str 的 char 变量,并试图将它传递给一个函数。我不断收到error cannot convert char (*)[1000] to char **。我知道对于cannot convert char to char *,您只需在字符前面使用&,但我不知道在这种情况下该怎么做。我搜索了堆栈和谷歌,但没有运气。有什么想法吗?
char str2[1000];
strcpy(str2, "/home/" );
strcat(str2, pw->pw_name );
strcat(str2, "/Documents/test4.txt" );
char bufTest[512];
int link = GetSymbolicLinkTarget(&str2, bufTest, sizeof(bufTest));
这里是函数
int GetSymbolicLinkTarget(char *argv[], char *buf, size_t buf_size){
int count = readlink(argv[1], buf, buf_size);
if (count >= 0) {
buf[count] = '\0';
}
return count;
}
【问题讨论】:
-
“我创建了一个名为
str的 char 变量,我试图将它传递给一个函数” - 哪个函数?您在代码中传递给它的唯一函数是strcpy()和strcat(),它们都不可能给您该错误消息。 -
char *argv[] 表示二维数组。您无法转换为 char **,因为两者不同。
-
我的想法是:如果您要编写 C++,请编写真正的 C++。我将从:
std::string GetSymbolicLinkTarget(std::string const &input); -
@Aaron 你能澄清一下你是否可以改变
GetSymbolicLinkTarget的功能吗? -
当然,您了解
GetSymbolicLinkTarget以及argv[1]是什么意思? (这是字符串数组中的 second 条目。)
标签: c++ c string pointers char