Skip to content
GitLab
Explorer
Connexion
S'inscrire
Navigation principale
Rechercher ou aller à…
Projet
L
lepl1503-2020-groupe-M2
Gestion
Activité
Membres
Labels
Programmation
Tickets
Tableaux des tickets
Jalons
Wiki
Code
Requêtes de fusion
Dépôt
Branches
Validations
Étiquettes
Graphe du dépôt
Comparer les révisions
Extraits de code
Compilation
Pipelines
Jobs
Planifications de pipeline
Artéfacts
Déploiement
Releases
Registre de conteneur
Registre de modèles
Opération
Environnements
Surveillance
Incidents
Analyse
Données d'analyse des chaînes de valeur
Analyse des contributeurs
Données d'analyse CI/CD
Données d'analyse du dépôt
Expériences du modèle
Aide
Aide
Support
Documentation de GitLab
Comparer les forfaits GitLab
Forum de la communauté
Contribuer à GitLab
Donner votre avis
Conditions générales et politique de confidentialité
Raccourcis clavier
?
Extraits de code
Groupes
Projets
Afficher davantage de fils d'Ariane
Laurent Paucot
lepl1503-2020-groupe-M2
Validations
a475c99a
Valider
a475c99a
rédigé
5 years ago
par
Jean-Baudouin Zimer
Parcourir les fichiers
Options
Téléchargements
Correctifs
Plain Diff
premier essai de jb
parent
d854b95b
Aucune branche associée trouvée
Branches contenant la validation
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
Pipeline
#1442
réussi
5 years ago
Étape : external
Modifications
1
Pipelines
1
Masquer les modifications d'espaces
En ligne
Côte à côte
Affichage de
1 fichier modifié
projet_3.c
+74
-3
74 ajouts, 3 suppressions
projet_3.c
avec
74 ajouts
et
3 suppressions
projet_3.c
+
74
−
3
Voir le fichier @
a475c99a
...
@@ -3,6 +3,7 @@
...
@@ -3,6 +3,7 @@
#include
<string.h>
#include
<string.h>
#include
<io.h>
#include
<io.h>
#include
<sys/stat.h>
#include
<sys/stat.h>
#include
<sys/mman.h>
#include
<unistd.h>
#include
<unistd.h>
int
is_div
(
int
number
,
int
i
)
{
// Vérifie si i est un diviseur de number.
int
is_div
(
int
number
,
int
i
)
{
// Vérifie si i est un diviseur de number.
...
@@ -91,7 +92,7 @@ void *afficherListe(list_t *liste) { // afficher la liste
...
@@ -91,7 +92,7 @@ void *afficherListe(list_t *liste) { // afficher la liste
printf
(
"NULL
\n
"
);
printf
(
"NULL
\n
"
);
}
}
void
ecrire_dans_fichier
(
char
*
input
,
char
*
output
)
{
void
l
ecrire_dans_fichier
(
char
*
input
,
char
*
output
)
{
int
fichier_entree
=
open
(
input
,
O_RDONLY
)
;
// ouverture de fichier en mode lecture
int
fichier_entree
=
open
(
input
,
O_RDONLY
)
;
// ouverture de fichier en mode lecture
// O_RDONLY , O_WRONLY ou O_RDWR .
// O_RDONLY , O_WRONLY ou O_RDWR .
// respectivement l'ouverture du fichier en lecture seule, en écriture seule ou en lecture / écriture.
// respectivement l'ouverture du fichier en lecture seule, en écriture seule ou en lecture / écriture.
...
@@ -165,7 +166,77 @@ void ecrire_dans_fichier(char *input, char *output) {
...
@@ -165,7 +166,77 @@ void ecrire_dans_fichier(char *input, char *output) {
munmap
(
mapping
,
sizeof
(
int
))
;
munmap
(
mapping
,
sizeof
(
int
))
;
}
}
}
}
/* int main() {
void
ecrire_dans_fichier
(
char
*
input
,
char
*
output
)
{
// => en utilisant FILE on a plusieurs fonctions qui facilitenet la vie
FILE
*
fichier_entree
=
NULL
;
fichier_entree
=
fopen
(
input
,
"r+"
)
;
// "r+": lecture et écriture. Vous pourrez lire et écrire dans le fichier.
// Le fichier doit avoir été créé au préalable.
FILE
*
fichier_sortie
=
NULL
;
fichier_sortie
=
fopen
(
output
,
"w+"
)
;
//"w+": lecture et écriture, avec suppression du contenu au préalable.
// Le fichier est donc d'abord vidé de son contenu, vous pouvez y écrire,
// et le lire ensuite. Si le fichier n'existe pas, il sera créé.
if
(
fichier_entree
!=
NULL
||
fichier_sortie
!=
NULL
)
{
// si ca ne va pas
return
;
}
char
*
line
=
malloc
(
sizeof
(
int
))
;
// j'alloue de la memoire pour line
while
(
fgets
(
line
,
sizeof
(
int
),
fichier_entree
)
!=
NULL
)
{
int
nombre
=
strtol
(
line
,
NULL
,
0
)
;
// Cette fonction, signifiant string to long, permet de transformer une chaîne de caractères, contenant
// la représentation textuelle d'un entier, en un entier type long.
void
*
mapping
=
mmap
(
NULL
,
sizeof
(
int
),
PROT_WRITE
,
MAP_SHARED
,
fichier_sortie
,
0
)
;
/*Établir ne projection en mémoire des fichiers ou des périphériques (
en qq sorte le malloc des fichier
argument :
1er => L'adresse de départ de la nouvelle projection
2eme => longueur
3eme => PROT_WRITE On peut écrire dans la zone mémoire.
4eme => MAP_SHARED Partager cette projection.
5eme => fihcier
6eme => ?
mmap() renvoie un pointeur sur la zone de mémoire, s'il réussit. En cas d'échec il retourne la valeur MAP_FAILED (c'est-à-dire (void *) -1)
http://manpagesfr.free.fr/man/man2/mmap.2.html
*/
memcpy
(
mapping
,
line
,
sizeof
(
int
))
;
/*void * memcpy (void * dest, const void * src, size_t n) copie n caractères de la zone mémoire src vers la zone mémoire dest .
argument :
dest - Il s'agit du pointeur vers le tableau de destination où le contenu doit être copié, transtypé en un pointeur de type void *.
src - Il s'agit d'un pointeur vers la source des données à copier, transtypées en un pointeur de type void *.
n - Il s'agit du nombre d'octets à copier.
Cette fonction renvoie un pointeur vers la destination
https://www.tutorialspoint.com/c_standard_library/c_function_memcpy.htm
*/
fputc
((
int
)
mapping
,
fichier_sortie
)
;
// Ecriture dans le fichier
list_t
*
liste
=
prime_divs
(
nombre
)
;
if
(
liste
==
NULL
)
{
continue
;
}
else
{
node_t
*
noued
=
liste
->
head
;
while
(
noued
!=
NULL
)
{
char
*
nombre_devient_char
=
NULL
;
sprintf
(
nombre_devient_char
,
"%d"
,
noued
->
nombre_premier
)
;
/* https://www.geeksforgeeks.org/sprintf-in-c/
* int sprintf (char * str, const char * string, ...)
Au lieu d'imprimer sur la console, il stocke la sortie sur le tampon de caractères spécifié dans sprintf
*/
fputc
((
int
)
nombre_devient_char
,
fichier_sortie
)
;
noued
=
noued
->
next
;
}
printf
(
"
\n
"
);
}
munmap
(
mapping
,
sizeof
(
int
))
;
}
}
/*int main(int argc, char *argv[]) {
// test pour is_div(int number, int i)
// test pour is_div(int number, int i)
int number = 10 ;
int number = 10 ;
int number1 = 11 ;
int number1 = 11 ;
...
@@ -185,4 +256,4 @@ void ecrire_dans_fichier(char *input, char *output) {
...
@@ -185,4 +256,4 @@ void ecrire_dans_fichier(char *input, char *output) {
// je ne vois pas pq ca ne fonctionne pas
// je ne vois pas pq ca ne fonctionne pas
printf("%d\n",afficherListe(liste)) ;
printf("%d\n",afficherListe(liste)) ;
return 0;
return 0;
} */
}*/
\ No newline at end of file
Ce diff est replié.
Cliquez pour l'agrandir.
Aperçu
0%
Chargement en cours
Veuillez réessayer
ou
joindre un nouveau fichier
.
Annuler
You are about to add
0
people
to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Enregistrer le commentaire
Annuler
Veuillez vous
inscrire
ou vous
se connecter
pour commenter