Pourquoi la deuxième strncpy donne-t-elle des symboles bizarres incorrects lors de l'impression? J'ai besoin de quelque chose comme fflush (stdin)?Strncpy (Programmation chaîne C) ne fonctionne pas bien la deuxième fois
Notez que j'ai utilisé scanf ("% s", aString); pour lire une chaîne entière, l'entrée entrée commence d'abord avec un espace afin qu'il fonctionne correctement.
void stringMagic(char str[], int index1, int index2)
{
char part1[40],part2[40];
strncpy(part1,&str[0],index1);
part1[sizeof(part1)-1] = '\0';//strncpy doesn't always put '\0' where it should
printf("\n%s\n",part1);
strncpy(part2,&str[index1+1],(index2-index1));
part2[sizeof(part2)-1] = '\0';
printf("\n%s\n",part2);
}
EDIT Le problème semble résider dans
scanf("%s",aString);
parce que quand on utilise printf ("\ n% s", aString); et je suis entré quelque chose comme "Assez avec le monde bonjour" je reçois seulement en sortie "Assez" à cause du '\ 0'.
Comment puis-je saisir correctement la phrase entière avec des espaces stockés? Lire des personnages?
Maintenant j'utilise: fgets (aString, 100, stdin); (Reading string from input with space character?)
Vérifiez si les limites (index1 + 1) et (index2 - index1) sont réellement dans la taille de la partie 2 du tableau char. Cela pourrait être la cause. Ensuite, vérifiez si str est bien formé. – SenselessCoder
fflush (stdin) est un comportement indéfini, donc vous ne devriez jamais le faire dans un programme. – Lundin
Mais jusqu'à maintenant cela fonctionne bien dans mon programme. Si vous connaissez une alternative je serais plus qu'heureux de l'entendre (puisque parfois après le premier scanf l'autre scanf échouera) –