我在使用返回char的函數時遇到問題。這是函數,其集3個字符(C1,C2,C3)加入到1(infotot)的代碼:從函數返回的錯誤信息
char gatherinfo(char *c1,char *c2,char *c3){
char infotot[256];
int n=sprintf(infotot,"%s;%s;%s;",c1,c2,c3);
return *infotot;
}
而在主我爲了訪問給函數有這樣的代碼:
char info[256];
*info=gatherinfo(c1,c2,c3);
其中C1,C2和C3被定義爲:
char *c1,*c2,*c3;
在功能方面,infotot取權值:
*infotot="c1;c2;c3;"
但是問題出現在主要信息中,信息取值如下:
*info="lÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ"
其中第一個字母「l」對應於c1的第一個字母。我怎麼能解決它,以便有info =「c1; c2; c3;」?
你分配一個'char',而不是一個字符串,這就是爲什麼只有第一個字母出現 – OMGtechy
您將指針傳遞到一個字符指針?你知道格式''%s「'需要一個C風格的*字符串*嗎?即由零終止的字符數組。如果沒有合適的[最小,完整和可驗證示例](http:// stackoverflow。com/help/mcve),但它看起來像*未定義的行爲*給我。 –
'return * infotot;'相當於'return infotot [0];'。 '* info = gatherinfo(c1,c2,c3);'相當於'info [0] = gatherinfo(c1,c2,c3);' – molbdnilo