Comment copier une chaîne à l'aide d'un pointeur
Voici un programme que j'ai écrit pour copier une chaîne de caractères constante.
Lorsque le programme est exécuté, il se bloque. Pourquoi est-ce arrivé ?
#include <stdio.h>
char *alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char c;
char *l;
main(){
while((c = *alpha++)!='#include <stdio.h>
char *alpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
char c;
char *l;
main(){
while((c = *alpha++)!='\0')
*l++ = *alpha;
printf("%s\n",l);
}
')
*l++ = *alpha;
printf("%s\n",l);
}
source d'informationauteur Arabeka
Vous devez vous connecter pour publier un commentaire.
Pour effectuer de telles copie manuelle:
Pour copier des chaînes de caractères en C, vous pouvez utiliser la fonction strcpy. Voici un exemple:
Si vous voulez éviter les dépassements de la mémoire tampon, utilisez
strncpy
au lieu destrcpy
. Par exemple:Vous avez besoin d'allouer de l'espace pour
l
. Actuellement, il est de pointage à un endroit aléatoire dans la mémoire, et si vous essayez d'écrire à cet endroit, le système d'exploitation est susceptible d'arrêter (AKA crash) de votre application. Si vous voulez que votre code du travail, puis attribuez-lui un peu d'espace pourl
avecmalloc()
ou créerl
comme un tableau de caractères avec suffisamment d'espace pour contenir"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
plus le terminateur NULL.Voir http://cslibrary.stanford.edu/106/ un apprêt sur les pointeurs.
tmp = &blah[i]
peut être échangé avectmp = &(*(blah + i))
.Vous pouvez directement faire le code ci-dessous:
Si votre code est ci-dessous:
🙂
cpy fonction prend deux pointeurs de char src et le pointeur pointe vers le premier caractère de la src(char tableau) définie dans la fonction principale, et même comme des pointeur pointe vers l'emplacement initial de des(char tableau) définie dans la fonction principale et la boucle while de la valeur de la src pointeur d'affecter la valeur des pointeur et incrémenter le pointeur vers l'élément suivant, ce sera le cas jusqu'à ce que la boucle while rencontrés avec la valeur null et sort de la boucle et des pointeur simplement attribué null après la prise de toutes les valeurs.
De sortie: Image