1
只是一个语法问题,这里是我的代码片段。 (对不起,浏览器是不是让我正确粘贴到堆栈溢出。)将字符串文字传递给'char *'函数并得到编译器警告
#include <iostream> /* 'iostream.h' is deprecated. */
#include <cstring>
#include <cstdlib>
#include <cstdio>
using namespace std; /* Required. */
FILE *OpenFile(char *Filename)
{
FILE *FP;
if((FP = fopen(Filename, "r")) == NULL)
{ /* Error opening file. */
std::cout << "[!!] Unable to open database!"
<< " Are you sure it exists?\n"
<< "[<<] Database Unchanged.\n";
exit(EXIT_FAILURE); /* End program. */
}
else /* Properly opened the file. */
return FP;
}
int main(void)
{
FILE *Data; /* Our database file pointer. */
Data = OpenFile("Data.txt");
printf("Success!\n");
return 0;
}
当我编译,我得到以下警告:
$ g++ test.cpp -o test
test.cpp: In function ‘int main()’:
test.cpp:27:28: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
$
我要去哪里错了?在C++
请在此处贴你的代码。不要让我们访问外部网站来查看您的代码。 – 2012-03-03 04:22:16
我知道,firefox对我来说一直很奇怪,试图找出原因。 – 2012-03-03 04:24:34
报告'cerr'上的错误;这就是它的设计目的。理论上讲,使用'FILE * Data = OpenFile(“data.txt”);'并在退出之前关闭文件是一个好主意。实际上,在这种情况下,这并不重要,但在许多情况下,不释放分配的资源是一个坏主意,RAII(资源获取初始化)建议初始化定义符号。 – 2012-03-03 04:32:59