Problème de pointeur [C] - C - Programmation
Marsh Posté le 23-04-2020 à 15:21:04
Il suffit de lire la doc...
Citation : The scanf_s function reads data from the standard input stream, stdin, and writes it into argument. Each argument must be a pointer to a variable type that corresponds to the type specifier in format. If copying occurs between strings that overlap, the behavior is undefined. |
(encore une doc pas terrible : chaque argument doit être l'adresse d'une zone mémoire inscriptible de taille compatible avec celle d'une variable du type spécifié dans le format)
Donc scanf_s("%d", &playerNumbers); devrait améliorer les choses.
A+,
Marsh Posté le 23-04-2020 à 15:29:58
Autre chose: Une bonne pratique c'est de vérifier la valeur de malloc (!=NULL) et aussi tu utilises BUFFER_SIZE pour fgets mais ton tableau est déclaré autrement (valeur fixe de 50). Si tu veux d'autres conseils du genre poste le code complet compilable.
Et j'espère que tu as activé les warnings sur ton compilateur? C'est obligatoire! (dans le sens "Une TRÈS bonne idée, surtout quand on débute mais pas que" )
Marsh Posté le 23-04-2020 à 15:53:44
Merci déjà pour les réponses !
J'ai changé mon code, et aussi la condition qui était fausse :
Code :
|
ET VOICI LA STRUCTURE PLAYER :
Code :
|
Malheureusement, je voudrais enfaîte, faire la boucle for, et à chaque itération, entrer le nom du joueur, sauf que ici, je ne peux même pas entrer de caractère puisque j'ai une violation d'accès !
Je voulais entrez un prénom, et utiliser strncpy(destination, source) pour allouer à mon player->name, un pseudo.
Le problème est-il dans le fait que player->name est un char, alors que tempo est un tableau de char ?
J'espère ne pas avoir embrouillé vos cerveaux.
Je sens que j'utilise mal la fonction strncpy(), mais je ne trouve pas
Marsh Posté le 23-04-2020 à 16:56:55
Ton code ne compile pas. Il manque j1, j2, BUFFER_SIZE, wheelTurn() et wheelTurn2(). Si tu veux de l'aide il faut toujours faciliter la tâche aux aidants et donner un code qui compile.
Sinon, pour ton problème: Soit dans ta structure tu déclares un tableau (soit char name[BUFFER_NAME]) soit un pointeur vers un espace mémoire que tu réserves avec malloc(). Pour s'entraîner 2) c'est très bien, sinon faire simple et prendre la première méthode.
Essaye et si tu n'y arrives pas poste ton code complet.
PS: C'est quel compilateur ça? scanf_s il ne connait pas le GCC.
Marsh Posté le 23-04-2020 à 17:40:04
C'est le compilateur de Visual Studio, scanf ne marche quasiment jamais, scanf_s est la vesion " sécurisée" de la fonction !
Je vais essayer toutes vos réponses !
Marsh Posté le 23-04-2020 à 18:46:00
Pour utiliser scanf, il faut jouter /D _CRT_SECURE_NO_WARNINGS dans la ligne de commande de compilation.
Marsh Posté le 23-04-2020 à 14:54:48
Bonjour !
Je dois faire un jeux, jouable à 2 ou 3 joueurs, pour cela j'ai besoin d'une structure que j'ai nommé Player.
J'ai voulu demander le nombre de "joueurs" à l'utilisateur, et faire une boucle for pour générer des joueurs en fonction du nombre qu'il entre, comme ceci :
MAIS ! Problème : Erreur à ma ligne scanf_s (voir le commentaire), et enfin j'ai une fenêtre qui s'ouvre et qui me dit en gros que dans un fichier "input.h" à la ligne 1567
Expression : result_pointer != nullptr
Je n'ai jamais eu à faire avec ces erreurs, et je me demandais s'il n'y avais pas besoin d'un double pointeur ?
Merci d'avance pour vos réponses,
Cordialement.