2013-05-20 75 views
-1

我真的面临数据类型转换的问题。如何处理数据类型?

我正在用GTK制作一个程序的GUI版本。要获得entry_text字符串,我需要一个const char*,它要求我在下面的函数中使用这个数据类型。

我想将其转换为string(char[])和编译器不断给我下面的错误:

源代码中的错误来:

//.... 
    char ret (const char *bd){ 
    char c[100]; 
    strcpy(c,bd); 
    return *c; 
} 

char encode(const char ebuf[],const char epass[]) { 
char *buf=ret(ebuf); 
char *pass=ret(epass); 
//... 

当我编译代码我得到以下(使用g ++)错误:

codgui.cpp: In function ‘char encode(const char*, const char*)’:
codgui.cpp:36: error: invalid conversion from ‘char’ to ‘char*’
codgui.cpp:37: error: invalid conversion from ‘char’ to ‘char*’

任何人有任何线索如何解决这个问题?

+0

编译器警告是关于编码函数,你不显示你如何调用函数,因此我们不能帮助你比你编译allready更多。如果一个函数要求char * aka char [],你应该提供这个,而不是char。 – hetepeperfan

+0

你需要发布一些关于你的问题的更多细节,以及为什么你认为你需要做你正在做的事情。 – tomlogic

回答

1

您的ret函数仅返回本地变量c中的第一个字符。你想返回一个char*,你不应该返回一个局部变量的地址,所以你需要在堆上创建它。

char* ret (const char *bd){ 
char *c = new char[100]; 
strcpy(c,bd); 
return c; 
} 

char encode(const char ebuf[],const char epass[]) { 
char *buf=ret(ebuf); 
char *pass=ret(epass); 
+0

提供的编译器错误解决了编码功能,您正在谈论ret函数,但这确实是另一个问题。问题在于海报向编码功能提供'char'而不是'char *',他/她应该显示该代码。 – hetepeperfan

+0

ya true ... thnx dud – afr0ck

+0

错误显示“In function'char encode(...)'”它与OP传递给编码函数的内容无关。否则,错误将不在第36和37行(两条不同的行)。 – Brad