2010-06-03 16 views
1
char in[100], *temp[10],var[10][10]; 
int i, n = 0, 
double val[10]; 
var[0][]="ANS"; 

Je veux attribuer une chaîne à var [0] [0,1,2] qui est 'ANS', mais ne fonctionne pas et je ne peux pas comprendre où je me trompe ceAffectation d'une chaîne à un tableau 2D

Répondre

2

Vous avez en quelque sorte répondu à votre propre question. Vous voulez assigner var [0] [0,1,2,3] à "ANS" à droite? Eh bien "ANS" est un tableau de caractères, ans [0,1,2,3] (ne pas oublier le terminateur nul). Donc, vous devez attribuer chacun individuellement. Dans C les chaînes ne sont pas un type de données, elles sont juste un tableau d'autres variables (les chars pour être exact). Qu'est-ce que vous pouvez faire à la place est:

strcpy(var[0], "ANS"); 

Qui fera la copie byte-by-byte pour vous.

Il y a cependant quelques pièges à strcpy. Premièrement, le tableau char de destination (var [0] dans ce cas) doit être assez grand pour contenir la chaîne. Il ne vérifie pas cela pour vous (il ne peut pas, en fait), donc si vous ne faites pas attention, vous pouvez provoquer un débordement de tampon. En outre, la source doit être terminée par NULL.

2

Peut-être au lieu d'utiliser,

strncpy(var[0], "ANS", 3); 
1

Lorsque vous écrivez

var[0][] = "ANS" 

compilateur essaie d'attribuer "ANS" à var [0] [0] qui est un endroit pour un seul omble chevalier.

Par conséquent, vous devez utiliser la fonction strcpy. strcpy va copier char-by-char.