Je vois deux problèmes ici. Le premier est que la source du strcpy
est a
où il devrait probablement être .
La seconde est que x
n'est pas à terminaison nulle. Les chaînes dans C sont des tableaux de caractères à terminaison nulle.
je changerais les deux lignes:
char x[] = {'3','0','2','5','9','3','1'};
strcpy(a[0].code, a);
à:
char x[] = {'3','0','2','5','9','3','1', '\0'};
strcpy(a[0].code, x);
Voici un programme complet qui vous donne ce que vous voulez (il imprime en fait le numéro deux fois, une fois dans votre intérieur boucle caractère par caractère et une fois avec le printf
de sorte que vous pouvez voir qu'ils sont les mêmes):
#include <stdio.h>
#include <string.h>
#define MAX 100
struct encode {
char code[MAX];
} a[10];
int main() {
int i, j;
char x[] = {'3','0','2','5','9','3','1','\0'};
for(i = 0; i < 1; i++) {
for(j = 0; j < 7; j++) {
printf("%c", x[j]);
}
printf("\n");
strcpy(a[0].code, x);
}
printf("%s\n",a[0].code);
return 0;
}
Mise à jour basée sur un commentaire:
Je suis désolé. Je suis nouveau à C. Mes excuses pour ne pas coller l'extrait de code correctement au début: "printf ("% c ", a [0] .code);" n'affiche pas "3025931".
Non, ce ne sera pas le cas. C'est parce que a[0].code
est un tableau de caractères (chaîne dans ce cas) et vous devez utiliser "%s"
, pas"%c"
. Modifier le spécificateur de format dans le printf
devrait résoudre ce problème particulier.
... au nom de codethulhu est ce que 'strcopy' est censé faire? –
Pourquoi avez-vous une fonction appelée affichage que vous n'utilisez même pas? –
essayez d'utiliser votre variable "i" dans strcpy (a [i] .code, a); au lieu de coder dur à 0? – EToreo