2013-05-20 62 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