невозможно преобразовать содержимое в argv [] в float [] [] в C - PullRequest
4 голосов
/ 09 марта 2011

Я делаю программу, в которой умножаю матрицы, но моя большая проблема заключается в преобразовании входных данных в два массива, которые я в конечном итоге умножу. Ниже приведен мой код для преобразования, включая объявление массивов. (Я удалил проверку того, что входные данные являются 8 действительными числами с плавающей точкой, поскольку я его отлаживал).

    //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 при компиляции, которое говорит: «значение в подписке не является ни массивом, ни указателем» Я искал ошибку, но не понял, что это значит в моем случае.

Ответы [ 4 ]

4 голосов
/ 09 марта 2011

Я думаю, что вам нужно следующее:

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

Обратите внимание на использование () вместо [] вокруг argv[i] - atof - это функция, а не массив.

2 голосов
/ 09 марта 2011

atof - это функция - вы можете вызывать функции, используя (), а не оператор индекса [].

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

Полагаю, это была опечатка - возможно, измените свой шрифт?

1 голос
/ 09 марта 2011

atof - это функция, поэтому вы должны использовать atof(argv[i]);

1 голос
/ 09 марта 2011

Используйте

atof(argv[i])

вместо

atof[argv[i]]

Остерегайтесь разницы между [] и ().

...