首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

上面 strcpy 函数为什么报错,该如何修改呢

2012-10-31 
下面 strcpy 函数为什么报错,该怎么修改呢?[codeC/C++][/code]#include stdafx.h#include MySqlSevece

下面 strcpy 函数为什么报错,该怎么修改呢?
[code=C/C++][/code]
#include "stdafx.h"
#include "MySqlSevece.h"

SqlUser *pSqlUser;
const char*g_host = "localhost";
const char*g_pwd = "3736614";
const char*g_user = "root";

strcpy( pSqlUser->host, g_host);
strcpy( pSqlUser->pwd , g_pwd );
strcpy( pSqlUser->user , g_user );


file /MySqlSevece.h里面

#include < my_global.h >
#include < mysql.h >
#include < vector >
#pragma comment(lib, "libmysql.lib")
struct SqlUser
{
char host[512];
char user[512];
char pwd[512];
};


报错是


1>MySqlSever.cpp
1>d:\c++\mysqlsever\mysqlsever\mysqlsever.cpp(12) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>d:\c++\mysqlsever\mysqlsever\mysqlsever.cpp(12) : error C2365: “strcpy”: 重定义;以前的定义是“函数”
1> c:\program files\microsoft visual studio 9.0\vc\include\string.h(74) : 参见“strcpy”的声明
1>d:\c++\mysqlsever\mysqlsever\mysqlsever.cpp(12) : error C2078: 初始值设定项太多
1>d:\c++\mysqlsever\mysqlsever\mysqlsever.cpp(12) : error C2440: “初始化”: 无法从“const char *”转换为“int”
1> 没有使该转换得以执行的上下文
1>d:\c++\mysqlsever\mysqlsever\mysqlsever.cpp(13) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>d:\c++\mysqlsever\mysqlsever\mysqlsever.cpp(13) : error C2365: “strcpy”: 重定义;以前的定义是“函数”
1> c:\program files\microsoft visual studio 9.0\vc\include\string.h(74) : 参见“strcpy”的声明
1>d:\c++\mysqlsever\mysqlsever\mysqlsever.cpp(13) : error C2078: 初始值设定项太多
1>d:\c++\mysqlsever\mysqlsever\mysqlsever.cpp(13) : error C2440: “初始化”: 无法从“const char *”转换为“int”
1> 没有使该转换得以执行的上下文
1>d:\c++\mysqlsever\mysqlsever\mysqlsever.cpp(14) : error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>d:\c++\mysqlsever\mysqlsever\mysqlsever.cpp(14) : error C2365: “strcpy”: 重定义;以前的定义是“函数”
1> c:\program files\microsoft visual studio 9.0\vc\include\string.h(74) : 参见“strcpy”的声明
1>d:\c++\mysqlsever\mysqlsever\mysqlsever.cpp(14) : error C2078: 初始值设定项太多
1>d:\c++\mysqlsever\mysqlsever\mysqlsever.cpp(14) : error C2440: “初始化”: 无法从“const char *”转换为“int”

[解决办法]
因为strcpy是函数,你不封装成整体函数,怎么调用;
改成这样试试:

C/C++ code
void copydata(){strcpy( pSqlUser->host, g_host);strcpy( pSqlUser->pwd , g_pwd );strcpy( pSqlUser->user , g_user );}
[解决办法]
因为你创建了一个指针但是没有为指针分配它指向的地址。自然就没有空间来赋值字符串。
修改的话只要新建一个结构体实量就好。

C/C++ code
SqlUser *pSqlUser=new SqlUser; 

热点排行