2011-03-09 68 views
4

我正在做一個程序,我正在使用matricies,但是我的大問題是將輸入轉換爲兩個數組,最終我會乘法。以下是我的轉換代碼,包括數組聲明。 (我刪除了驗證,輸入是8個有效的花車,因爲我一直在調試它)。無法將argv []中的內容轉換爲C中的float [] [] 0

//declare the arrays 
float a[2][2]; 
float b[2][2]; 
float c[2][2]; 

int main (int argc, char *argv[]) 
{ 
    int i,j,k,l; 

    i=0; 
    l=4; 
// declare and initialize arrays 
    for(j =0; j<2; j++) 
    { 
     for(k=0;k<2; k++) 
     { 
      a[j][k]=atof[argv[i]]; 
      b[j][k]=atof[argv[l]]; 
      i++; 
      l++; 
     } 
    } 
...... 

我用在編譯ATOF是說,當得到一個錯誤:「下標值既不是數組,也不指針」 我一直在尋找了錯誤,但還沒有想出什麼意思在我的情況。的

atof[argv[i]] 

+0

您是否嘗試過維度argv?你是否將它作爲參數傳入? – Jason 2011-03-09 05:57:01

+0

你是不是指'atof(argv [i]);'? – 2011-03-09 05:58:17

+0

請考慮'atof()'的'strtof()'函數。 'strto *()'家族具有錯誤檢查的優勢,這是'ato *()'家族缺乏的。 – 2011-03-09 06:02:35

回答

4

我想你想要的是以下幾點:

a[j][k]=atof(argv[i]); 

注意使用()而不是[]各地argv[i] - atof是一個函數,不是一個數組。

+1

omg ...我很累,我沒有看到 – Jonathan 2011-03-09 06:03:39

1

使用

atof(argv[i]) 

代替謹防[]()之間的差異。

1

atof是一個函數,所以你應該使用atof(argv[i]);

2

atof是一個函數 - 您可以使用()調用函數,而不是下標運算符[]

a[j][k] = atof(argv[i]); 

我認爲這是一個錯字 - 也許改變你的字體?

相關問題