我正在嘗試編寫一個函數,它以下列格式從用戶處獲得輸入:0.3,0.2,1
in數據類型:float,float,int
。如果兩個浮點數都爲0.0,則數據輸入完成。我初始化三個數組如何比較傳遞給函數的數組元素的值
float col1Train[1000];
float col2Train[1000];
int col3Train[1000];
的主要功能(可以合理地假定,存在由用戶不到1K數據項),並調用這樣的功能:
nTrainSets = readTrainingData(&col1Train, &col2Train, &col3Train);
現在,我的問題是IF條件(標記如下)崩潰我的程序,我不知道爲什麼。我想檢查包含的數組元素是否爲0。
另外,同樣語句的替代表達式(至少我相信它是相同的嗎?)不是編譯引用float和* float的不匹配 - 爲什麼/我該如何解決這個問題?
int readTrainingData(float *col1[], float *col2[], int *col3[])
{
int i = 0;
int scanfReturn = scanf("%f,%f,%d", &col1[i], &col2[i], &col3[i]);
while (scanfReturn == 3) {
printf ("read: %f, %f, %d", col1[i], col2[i], col3[i]); // Debug statement, execution succeeds
if (*col1[i] == 0.0f && *col2[i] == 0.0f) { // Causing the error
//if (*(col1 + i) == 0.0f && *(col2 + i) == 0.0f) { // Not even compiling
col1[i] = NULL;
col2[i] = NULL;
col3[i] = NULL;
break;
}
++i;
scanfReturn = scanf("%f,%f,%d", &col1[i], &col2[i], &col3[i]);
}
return i - 1;
}
謝謝!
'* COL1 [I] == 0.0f'是不對的。重寫爲'*(col1 + i)== 0.0f'或者簡單地作爲col [i] == 0.0f' – Fabulous
@Fabulous我試過了,如上所述,它會導致:'error C2440:'==':在編譯期間無法從'float'轉換爲'float *' – replax
爲什麼您將指針傳遞給數組而不是數組?函數調用與函數原型不匹配:'float * col1 []'是一個指針數組,不是指向數組的指針。 – mch