J'ai une chaîne, disons toioyhpknmtlghk
.Je souhaite créer un tableau de caractères 2-d ayant n lignes de sorte qu'il contienne des premier, deuxième, troisième sous-chaînes de longueur n comme ses lignes.Problème lors de la copie de la chaîne à l'aide de memcpy
Par exemple, ici n = 5 les chaînes de sous de longueur 5 sont, toioy
hpknm
et tlghk
donc ensemble arr devrait ressembler à
t o i o y
h p k n m
t l g h k
Maintenant, cela aurait pu être plus facile si je copie les caractères en boucle à travers le tableau mais ici j'essaie d'utiliser memcpy comme,
int main()
{
long n;
cin>>n;
char a[3][n+1];char str[20]; //I have taken n+1 columns as n for substring and 1 for '\0'
scanf("%s",str);
char *p=str;
memcpy(a[0],p,n);strcat(a[0],"\0");
p=p+n;
memcpy(a[1],p,n);strcat(a[1],"\0");
p=p+n;
memcpy(a[2],p,n);strcat(a[2],"\0");
for(int i=0;i<3;i++)
{
printf("%s\n",a[i]);
}
}
Mais la sortie du tableau des résultats obtenus sont les suivants,
//input
5
toioyhpknmtlghk
//output
toioy
hpknm{tlghk‼â
tlghk‼â
'cin >> n;' est pas valide C. (sauf si 'cin' est un objet de nombre entier type, 'cin' et' n' sont initialisés, et la valeur de 'n' est positive et inférieure à la largeur du type de' cin', auquel cas c'est une instruction sans effet – EOF
Afficher tout le texte/output session –
Que devrait-il faire? strcat (a [0], "\ 0"); 'do? – mch