我以为我可以将字符串指针传递给函数:
int main()
{
const char fileName[] = "network/fileName.yo";
WriteFile(fileName);
}
int WriteNetwork(char* fileName)
{
printf("the filename is %s\n", fileName);
}
但这似乎并没有像我预期的那样发挥作用。我必须错过一些非常简单的东西,但似乎无法追踪它!
答案 0 :(得分:6)
指向字符串文字的指针未传递给WriteFile()
。使用字符串文字fileName[]
初始化"network/fileName.yo"
。它是传递的变量fileName
。因为它是一个数组,它被转换为指向其第一个元素的指针..
在使用之前声明或定义WriteNetwork()
。
将指向const
数据的指针传递给期望指向非const
数据的指针的函数将无法编译。更改WriteNetwork()
以接受const
指针。 @Lưu Vĩnh Phúc
另请注意,该帖子似乎将WriteFile()
视为WriteNetwork()
@Ray Toal。当然这是一个文书错误,函数名称和调用应该是相同的。
// int WriteNetwork(const char* fileName) {
int WriteFile(const char* fileName) {
printf("the filename is %s\n", fileName);
}
int main(void) {
const char fileName[] = "network/fileName.yo";
WriteFile(fileName);
}
我必须遗漏一些非常简单的东西,但似乎无法追踪它!
提示: 省时间。启用所有编译器警告。他们提供快速反馈,以帮助您追踪"