我目前正在編寫一個應用程序,我需要一個C函數來返回一個數組。我讀過C函數直接不能返回數組,但指向數組,但無論如何,我仍然不能使它工作。我發送了一個字符串,其中有幾個數字值,我必須將其放入數組中。從C函數返回一個數組
我的代碼看起來是這樣的,其中的主要功能是:
int main() {
char arr[3] = {0};
char *str = "yaw22test242test232";
foo(arr,3,str);
printf("%d\n",arr[0]);
return 0;
}
在我想要的foo
功能與數字分別爲22,在陣列位置242和232 0,1和2返回一個數組。 foo
函數中的算法在主程序中使用時正常工作,但不是這樣。有什麼辦法可以解決這個問題嗎?我究竟做錯了什麼?該foo
功能如下所示:
void foo(char *buf, int count, char *str) {
char *p = str;
int k = 0;
while (*p) { // While there are more characters to process...
if (isdigit(*p)) { // Upon finding a digit, ...
double val = strtod(p, &p); // Read a number, ...
//printf("%f\n", val); // and print it.
buf[1-count-k] = val;
k++;
} else { // Otherwise, move on to the next character.
p++;
}
}
}
刪除了C++ flasg,對不起! – Carl
請澄清它是如何工作的。期望的行爲是什麼,它做什麼呢?有沒有錯誤信息? –
它返回的結果都是零,但是這是因爲我將'arr'變量聲明爲'char'而不是'double'。現在它正在工作。 – Carl