Stockage de valeur dans un tableau a partir d'un fichier
Résolu/Fermé
A voir également:
- Stockage de valeur dans un tableau a partir d'un fichier
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier rar - Guide
- Ouvrir un fichier .bin - Guide
- Comment faire un tableau - Guide
1 réponse
[Dal]
Messages postés
6203
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
29 janvier 2025
1 099
Modifié le 19 déc. 2018 à 16:00
Modifié le 19 déc. 2018 à 16:00
Salut aaa,
Si ton
Le plus simple est que la fonction appelante de
Ton prototype deviendrait
Donc
Et, bien sûr, tu n'as plus de
Dal
Si ton
SUDOKU Sest un
struct, en le déclarant comme variable automatique à l'intérieur de ta fonction, il devient en dehors du scope en sortant de la fonction.
Le plus simple est que la fonction appelante de
lire_fichier()déclare
SUDOKU Set qu'elle passe à
lire_fichier()un pointeur sur celle-ci, afin que ta fonction puisse en modifier le contenu. Ainsi, le contenu modifié sera accessible à la fonction appelante.
Ton prototype deviendrait
void lire_fichier (char *nom, SUDOKU *S);, tu supprimes ta déclaration en ligne 2 de
SUDOKU S;et dans ta fonction, tu accèdes aux membres de la
structpointée par S avec la notation
->au lieu du point.
Donc
S->gl[i][j]=0;au lieu de
S.gl[i][j]=0;... etc.
Et, bien sûr, tu n'as plus de
return S;en fin de fonction.
Dal
Modifié le 19 déc. 2018 à 16:03
http://www.cplusplus.com/reference/cstdlib/atoi/
19 déc. 2018 à 16:18
quand j'essaye avec le pointeur le compilation ne se fait plus et j'ai un message d'erreur qui est " warning control reaches end of non-void function".
pour le atoi, est ce que je devrais utiliser le code ascii pour convertir un char en int?
19 déc. 2018 à 16:22
Pour convertir un char (qui est un type entier), tu peux utiliser la façon suivante puisque le C requiert que les codes entiers correspondant aux char représentant '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' soient des entiers consécutifs.
donne sur ma machine
ma machine, comme la tienne probablement (53 étant le code ASCII de '5')
Dal
19 déc. 2018 à 16:46
Modifié le 19 déc. 2018 à 17:31
Tu peux le faire directement si tu le veux, c'est à toi de voir et de gérer ton code comme tu l'entends.
Que ce que tu fasses soit un exercice ou une application réelle, tu dois prendre tes responsabilités :-)
Maintenant, si tu as un utilisateur qui met "Z" à la place d'un chiffre dans un fichier, tu vas avoir des valeurs inattendues dans ta et, dans un programme en production auquel on demande de la robustesse, on devrait faire ce genre de vérifications avant de mettre des choses dans une structure de données que le programme va réputer conformes ...
Cet aspect de ton code ne concerne pas que la conversion du en , mais tout le reste. Par exemple, tu ne vérifies pas que le fichier a été correctement ouvert avec , ni que n''a pas produit d'erreurs ... cela réduit évidemment le niveau de robustesse et de fiabilité de ce que tu écris.