2011-03-09 2 views
4

Je fais un programme où je multiplie matricies, mais mon gros problème est la conversion de l'entrée dans les deux tableaux que je serai finalement multiplier. Ce qui suit est mon code de conversion incluant la déclaration des tableaux. (J'ai supprimé la validation que l'entrée est 8 flottants valides comme je l'ai débogué).impossible de convertir le contenu dans argv [] en float [] [] en C

//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++; 
     } 
    } 
...... 

je reçois une erreur lors de l'utilisation atof à la compilation qui dit: « valeur indicer est ni tableau, ni pointeur » J'ai cherché l'erreur, mais ne l'ai pas compris ce que cela signifie dans mon cas .

+0

avez-vous essayé de coter argv à tous? le transmettez-vous en paramètre? – Jason

+0

vouliez-vous dire 'atof (argv [i]); '? –

+0

Veuillez considérer la fonction 'strtof()' sur 'atof()'. La famille 'strto *()' a l'avantage de vérifier les erreurs, ce qui manque à la famille 'ato *()'. –

Répondre

4

Je pense que ce que vous voulez est la suivante:

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

Notez l'utilisation de () plutôt que [] autour argv[i] - atof est une fonction, pas un tableau.

+1

omg ... je suis tellement fatigué que je n'ai pas vu ça – Jonathan

1

Utilisez

atof(argv[i]) 

au lieu de

atof[argv[i]] 

Méfiez-vous la différence entre [] et ().

1

atof est une fonction, vous devez donc utiliser atof(argv[i]);

2

atof est une fonction - vous pouvez appeler des fonctions en utilisant (), pas l'opérateur d'indice []. Je suppose que c'était une faute de frappe - peut-être changer votre police?

Questions connexes