L'affectation d'un pointeur de char en char tableau en C
Je commence à étudier le C et j'ai déjà couru dans quelques problèmes.
Je veux analyser un fichier et stocker les résultats de chaque ligne dans une structure.
Ma structure ressemble:
struct record {
char x[100];
}
Ensuite, chaque fois que je utiliser strtok pour analyser une ligne dans certains file.txt,
struct record R;
...
char *token;
token = strtok(line, "\t");
jeton retourne un pointeur vers la chaîne et à chaque fois j'ai l'impression, il est correct de la chaîne. Je veux attribuer un jeton de x, tels que la R.x = token
, mais j'obtiens une erreur, "char x[100] n'est pas cessible". Est-il possible de convertir ce pointeur jeton effective d'un tableau de char, ni quelle serait la meilleure façon de stocker les résultats dans la structure?
- Vous ne pouvez pas attribuer les tableaux comme ça. Utilisation
memcpy()
à remplir avec les données que vous voulez qu'il contient.
Vous devez vous connecter pour publier un commentaire.
L'erreur dit tout. Tableaux ne sont pas cessibles. Vous devez copier chaque caractère un par un, puis ajoutez un NUL-terminator à la fin.
Heureusement, il existe une fonction qui fait cela pour vous. Le nom de la fonction est
strcpy
et il est trouvé dans lastring.h
en-tête.Pour résoudre votre problème, utilisez
au lieu de
Utilisation
strcpy
après s'être assuré que la chaîne s'inscrit dans le tableau:strcpy
s'arrête lorsqu'il rencontre une valeur NULL,memcpy
ne le fait pas.Donc, si vous tableau ont
0x00
par exemple.\0
dans le milieu,vous devriez utilisermemcpy
plutôt questrcpy
.