2016-04-12 1 views
1

fondamentalement je prends l'entrée d'utilisateur et l'emploie pour supprimer d'une liste, quand cette erreur vient d'être levée. Le code fonctionnait littéralement il y a une heure, donc je ne sais pas pourquoi Visual studio est en train d'essayer de le régler.char * diffère dans les niveaux d'indirection de char (*) [100]

char courseName[100]; 
scanf("%s", courseName); 
deletefromlist(&list, &courseName); 

deletefrom fonction de liste prend (Courselist * self, char * data) comme arguments.

Comment puis-je corriger cette erreur et l'éviter à l'avenir? à votre santé!

+0

La duplication possible de [C - 'char \ * \ *' diffère dans les niveaux d'indirection de 'char (\ *) \ [6 \]'] (http://stackoverflow.com/questions/7524070/c- char-diffère-dans-niveaux-de-indirection-de-char-6) –

Répondre

5

Le deuxième argument de la fonction accepte char *, vous devez donc passer courseName au lieu de &courseName.

Ou selon la nature de deletefromlist, vous pouvez changer le type d'argument.

+0

oui j'ai essayé celui-là, le code casse toujours. Je vais devoir jeter un oeil à ma fonction de suppression plus peut-être. Mais pourquoi char * n'est-il pas le même que char (*)? puisqu'ils pointent tous deux vers quelque chose –

+0

Vous avez déclaré 'courseName' comme un tableau de' char', donc 'courseName' se comporte (presque) comme un pointeur' char * '(il pointe sur le premier' char' du tableau). Dans votre fonction de suppression, assurez-vous que vous disposez des sauvegardes correctes pour éviter le débordement lorsque vous traitez le tableau. – Quentin

+0

ah oui, cela a du sens puisque je reçois des violations d'accès mémoire. cheers mate –