Juste un simple programme pour s'habituer aux pointeurs. Le programme est censé mettre le contenu d'une partie de ma mémoire dans un tableau de caractères dans l'ordre inverse de la façon dont la mémoire est lue. C'EST À DIRE. regardant l'adresse de la mémoire descendante, et je veux le stocker dans l'ordre décroissant dans un tableau de caractères.Code C simple, avec erreur «incompatibles incompatibles dans l'affectation»
Mon compilateur ne cesse de me dire: "erreur types incompatibles dans l'affectation"
Sur la ligne avec le realloc fonction
Qu'est-ce que je fais mal? Je me semble que les deux "inverse", et le résultat de realloc devraient être des pointeurs pour le type char?
Mon code:
int main(){
char first[]="hello mark", strng='h', reverse[]="";
char* ptr=&first[10];
int i=0;
while(ptr > (&strng-0xf4240)){
printf("%c", *ptr--);
reverse = realloc(reverse, (i++ * sizeof(char)));
reverse[strlen(reverse)-i] = *ptr;
}
printf("%s", reverse);
return 0;
}
Merci!
EDIT: Désolé, je mal posté ces derniers comme commentaires ci-dessous
Merci pour l'aide, le premier et le second commentaire eu! J'ai eu le #includes requis, j'ai juste oublié de les copier dans le débordement de pile. Vous aviez raison, maintenant je suis coincé sur le strlen() non-terminé. Je vais résoudre celui-là par moi-même. Merci encore!
J'ai parlé trop tôt, il compilé bien, mais il y a une erreur de logique. La boucle while s'exécutera une fois. Cependant, les boucles suivantes échouent toujours, quelle que soit la valeur initiale de i. La ligne qui provoque l'échec est la ligne qui appelle realloc
Une bonne pratique pour commencer à écrire lorsque vous écrivez du code c est de lire les pages man sur les fonctions que vous appelez. Dans les systèmes * nix, vous pouvez le faire depuis la ligne de commande appelant "man functionname" ou vous pouvez taper "man functionname" dans google si vous utilisez un autre os. – CalvinR
Une grande partie de s'habituer aux pointeurs, s'habitue aux avertissements du compilateur et ce qu'ils signifient! Autrement dit, nous devons aller faire toutes les erreurs habituelles. – gbarry
Cela doit être l'un des morceaux de code les plus effrayants que j'ai jamais vus. –