如何处理数据类型?

时间:2013-05-20 17:39:37

标签: c char

我真的遇到了数据类型转换的问题。

我正在用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:在函数'char encode(const char *,const char *)'中:
  codgui.cpp:36:错误:从'char'到'char *'的转换无效   codgui.cpp:37:错误:从'char'无效转换为'char *'

任何人都有任何关于如何解决这个问题的线索?

1 个答案:

答案 0 :(得分: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);