Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les forums > Programmation > Langage C > la bilbiothèque des zeros en C! > Lecture du sujet

la bilbiothèque des zeros en C!

zeros.h et zeros.c

Vous devez être inscrit pour pouvoir poster des messages

Page : Précédente  1  2  3  4  5  6  7  8  Suivante
Auteur Message
1 visiteur sur ce sujet (1 anonyme)
Page : Précédente  1  2  3  4  5  6  7  8  Suivante
Hors ligne Jaloyan1 # Posté le 17/05/2008 à 21:30:39
Choisir = se priver du reste.
Avatar
Groupe : Membres
Reprise du dernier message de la page précédente :
ben si mais j'ai pas tout compris dedans.
C'est pour ca que je repose la question a ma facon.

Donc merci ca y est j'ai compris maintenant.

Si quelqu'un vous dit : "Je me tue à vous le répéter", laissez-le mourir.
Image utilisateur
Image utilisateur
Image utilisateur

Chef du fan club de jaloyan1
 
Hors ligne ironzorg # Posté le 18/05/2008 à 09:24:56
Groupe : Membres
Citation : -ed-
OK; Le but est donc de ne pas réinventer la roue, notamment les fonctions de la bibliothèque standard.


Exactement !

Je ne comprends pas trop le but de la lib que vous voulez développer: vous voulez reprogrammer des fonctions déjà existantes ?

Ca n'a aucun interet, le but est de les comprendre, et pas de savoir les refaire pour les publier ( dans ce cas la, la zerolib n'aurait pas lieu d'etre car en l'utilisant, on prendrait le risque d'utiliser des fonctions erronnées tandis que les memes ont été soigneusement mijotées par des professionnels :-° ).

Je persiste à dire qu'un des buts les plus lucratifs de ce type de projet serait de créer des "modules", des fonctions vraiment utiles ( on a parlé de supprimer une ligne dans un fichier, mais si vous voulez pousser le vice, essayez de créer une fonction qui crée des zones de texte en SDL ).

C'est dommage que vos efforts soient gaspillés dans ce genre d'actions peu originales et qui, au final, auront un but contraire à celui que vous étiez fixé: évoluer dans la prog en partageant vos sources ( qui aurait besoin d'une fonction perso qui calcule la longueur d'une chaine ?? ).

Hope u'll think about this.

Image utilisateur Image utilisateur
 
Hors ligne Jaloyan1 # Posté le 18/05/2008 à 09:48:50
Choisir = se priver du reste.
Avatar
Groupe : Membres
euh non on ne va pas réinventer la roue, juste des fonctions qui ressemblent mais avec par exemple des petits trucs en plus, des erreurs, si la chaine est trop longue par rapport a une taille donnée.

Aussi il compare par exemple les chaines

Salut,ca va?
Avec salut
Début avec début

Oui c'est exact(enfin il a trouvé tout en début la chaine salut).
La possibilité.
De toutes manières je vais donner ici toutes les fonctions a inclure dans la zérolib.
La je suis en train de travailler sur une fonction très utile : Saisie sécurisée de chaine avec attribut d'affichage. gestion des \b et des \r\n

Dommage que ca ne marche pas.
Je vais surement vous poser le problème pour que vous me donniez un petit coup de pouce.

Si quelqu'un vous dit : "Je me tue à vous le répéter", laissez-le mourir.
Image utilisateur
Image utilisateur
Image utilisateur

Chef du fan club de jaloyan1
 
Hors ligne ironzorg # Posté le 18/05/2008 à 10:03:54
Groupe : Membres
"euh non on ne va pas réinventer la roue, juste des fonctions qui ressemblent mais avec par exemple des petits trucs en plus, des erreurs, si la chaine est trop longue par rapport a une taille donnée.

Aussi il compare par exemple les chaines"


Je trouve dommage que vous vous limitiez tant dans la prog...

Image utilisateur Image utilisateur
 
Hors ligne Jaloyan1 # Posté le 18/05/2008 à 14:03:47
Choisir = se priver du reste.
Avatar
Groupe : Membres
Ben a vrai dire c'est mon premier projet informatique,donc c'est normal que ce soit un peu le bordel.
Mais t'en fais pas ca finira bien par se restructurer.

Si quelqu'un vous dit : "Je me tue à vous le répéter", laissez-le mourir.
Image utilisateur
Image utilisateur
Image utilisateur

Chef du fan club de jaloyan1
 
Hors ligne gogohan # Posté le 18/05/2008 à 19:33:35
Avatar
Groupe : Membres
J'avais oublié le .h ;)

folders.h


Code : C
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#ifndef FOLDERS_H
#define FOLDERS_H

/* #define Unix */ /* A mettre si on est sous linux ou mac */

#include <stdio.h>
#include <stdlib.h>

#include <string.h>

#include <math.h>

#include <stdbool.h>

#include <sys/stat.h>
#include <sys/types.h>

#include <dirent.h>

#ifdef Unix
#include <unistd.h>
#endif


int aqua_verify_folder(const char *folder); /* Verifier si un dossier existe
															  retourne :  0 quand le dossier existe
																			  1 quand le dossier n'existe pas
															*/
															
char **aqua_fract_folder(const char *folder, int *nb_folders); /*	Divise un chemin en chemins successifs:
																						Exemple :
					char ** chaine = aqua_fract_folder("dossier1/dossier2/fichier.extension", &nb_folders);
					chaine[0] vaut "dossier1" et chaine[1] vaut "dossier1/dossier2"
					nb_folders vaut 2
																					*/

int aqua_create_folder(const char *folder); /* Verifie si notre chemin existe, le cree s'il n'existe pas
														     Attention, la fonction ne marche pas sous mac quand on
															  essaye de creer un ou plusieurs dossiers sous la racine
															  '/'
															  
															  Retourne 0 si le dossier existait deja
															  Retourne 1 si le dossier a ete cree
															  Retourne -1 s'il y a eu un probleme et donc le dossier
															  n'a pas ete cree
															  
														  */ 

#endif

Codeur amateur C, C++, obj-c, TI-Basic, Python... ;)
 
Hors ligne Jaloyan1 # Posté le 18/05/2008 à 20:39:35
Choisir = se priver du reste.
Avatar
Groupe : Membres
ok bienvenue dans le projet.

Si quelqu'un vous dit : "Je me tue à vous le répéter", laissez-le mourir.
Image utilisateur
Image utilisateur
Image utilisateur

Chef du fan club de jaloyan1
 
Hors ligne gogohan # Posté le 19/05/2008 à 06:20:57
Avatar
Groupe : Membres
:)

Codeur amateur C, C++, obj-c, TI-Basic, Python... ;)
 
Hors ligne yoch # Posté le 29/05/2008 à 06:27:35
Avatar
Groupe : Membres
Code : C
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>

char *findnext (char *in, const char c)
{
    if (in != NULL)
    {
        char *out = in;
        while(out[0] != c && out[0] != 0)
        {
            out++;  /* incremente le pointeur ! */
        }
        if (out[0] == c)
            return ++out;
        else
            return NULL;
    }
    else
        return NULL;
}

C'est donc une fonction inspirée de strchr(), mais qui renvoie un pointeur sur le caractère suivant le caractère a rechercher, et NULL si elle n'a rien trouve, ce qui peut être fort utile pour parcourir une chaine selon un séparateur défini. (je sais, il y a strtok(), mas le principe diffère...)

Le principe est qu'on parcourt la chaine en incrémentant le pointeur, et on s'arrête lorsque la chaine se termine. Il faut donc que la chaine passée en argument soit une chaine valide (terminée par '\0').

Exemple d'utilisation :
Code : C
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <stdio.h>

char *findnext (const char *in, const char c)
{
    if (in != NULL)
    {
        char *out = (char*)in;
        while(out[0] != c && out[0] != 0)
        {
            out++;  /* incremente le pointeur ! */
        }
        if (out[0] == c)
            return ++out;
        else
            return NULL;
    }
    else
        return NULL;
}

int main()
{
    char s[] = "0 1 2 3 4 5";
    char *part = s;
    while (part != NULL)
    {
        puts(part);
        part = findnext(part, ' ');
    }
    return 0;
}


sortie :
Code : Console
0 1 2 3 4 5
1 2 3 4 5
2 3 4 5
3 4 5
4 5
5


Améliorations possibles :
Il est possible de faire des fonctions similaires avec plusieurs caractères en entrée, ou bien une chaine...
 
Hors ligne Jaloyan1 # Posté le 29/05/2008 à 07:52:12
Choisir = se priver du reste.
Avatar
Groupe : Membres
pas très sécurisé quand meme.

Et le but n'est pas de recoder la lib standard.

Merci quand même de ton aide.

Si quelqu'un vous dit : "Je me tue à vous le répéter", laissez-le mourir.
Image utilisateur
Image utilisateur
Image utilisateur

Chef du fan club de jaloyan1
 
Hors ligne -ed- # Posté le 29/05/2008 à 08:54:49
C is a sharp tool
Avatar
Groupe : Membres
Citation : Jaloyan1
pas très sécurisé quand meme.

Quels sont les risques que tu as détecté ?

Emmanuel Delahaye.
Non à la pub sur l'alcool sur Internet.

Des infos sur la programmation et le langage C:
http://bien-programmer.blogspot.com/
http://mapage.noos.fr/emdel/


Image utilisateur
 
Hors ligne tc # Posté le 29/05/2008 à 10:04:59
Readability counts
Avatar
Groupe : Membres
Citation : -ed-
Citation : Jaloyan1
pas très sécurisé quand meme.

Quels sont les risques que tu as détecté ?


Un problème de const-correctness par exemple, mais ce problème existe aussi avec strchr().

Thierry

"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth

| FAQ-Python | FAQ-C - FAQ-c.l.c | FAQ-C++ - FAQ-Lite |
 
Hors ligne 1337833K # Posté le 29/05/2008 à 10:23:10
fgsfds
Groupe : Membres
De toute façon, cette est fonction est quasi inutile, on peut très bien faire strchr(chaine, separateur) + 1.

Image utilisateur
Big Brother is watching you.
The chocolate is a lie !
Vous pouvez faire un geste gratuit pour changer le monde. :)
Libérez quelqu'un et quelqu'un-d'autre !
 
Hors ligne yoch # Posté le 29/05/2008 à 16:29:12
Avatar
Groupe : Membres
Citation : 1337833K
De toute façon, cette est fonction est quasi inutile, on peut très bien faire strchr(chaine, separateur) + 1.


Je crois que tu n'a pas tort... :p

Mais j'ai trouvé cette astuce en codant, je n'ai donc pas fait attention...
Édité le 29/05/2008 à 16:31:41 par yoch
 
Hors ligne tc # Posté le 29/05/2008 à 18:00:46
Readability counts
Avatar
Groupe : Membres
Citation : yoch
Citation : 1337833K
De toute façon, cette est fonction est quasi inutile, on peut très bien faire strchr(chaine, separateur) + 1.


Je crois que tu n'a pas tort... :p

Mais j'ai trouvé cette astuce en codant, je n'ai donc pas fait attention...


pourquoi astuce ?

Thierry

"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth

| FAQ-Python | FAQ-C - FAQ-c.l.c | FAQ-C++ - FAQ-Lite |
 
Hors ligne Jaloyan1 # Posté le 29/05/2008 à 18:02:53
Choisir = se priver du reste.
Avatar
Groupe : Membres
1337833K

Citation : J 1er
Et le but n'est pas de recoder la lib standard.



Je l'ai dit il y a quelque messages.

Désolé.

Si quelqu'un vous dit : "Je me tue à vous le répéter", laissez-le mourir.
Image utilisateur
Image utilisateur
Image utilisateur

Chef du fan club de jaloyan1
 
Hors ligne yoch # Posté le 29/05/2008 à 18:34:07
Avatar
Groupe : Membres
Citation : tc
Citation : yoch
Citation : 1337833K
De toute façon, cette est fonction est quasi inutile, on peut très bien faire strchr(chaine, separateur) + 1.


Je crois que tu n'a pas tort... :p

Mais j'ai trouvé cette astuce en codant, je n'ai donc pas fait attention...


pourquoi astuce ?

Thierry


C'est un abus de langage...
J'ignorais qu'on pouvait incrémenter un pointeur... :honte:
C'est pourquoi je ne pensais pas pouvoir faire strchr(chaine, separateur) + 1...
Édité le 29/05/2008 à 18:38:35 par yoch
 
Hors ligne Jaloyan1 # Posté le 29/05/2008 à 18:48:06
Choisir = se priver du reste.
Avatar
Groupe : Membres
ah tu ne le savais pas?
Je me demande quels genre de logiciels tu faisais sans incrémentation de pointeurs.

Si quelqu'un vous dit : "Je me tue à vous le répéter", laissez-le mourir.
Image utilisateur
Image utilisateur
Image utilisateur

Chef du fan club de jaloyan1
 
Hors ligne tc # Posté le 29/05/2008 à 18:50:51
Readability counts
Avatar
Groupe : Membres
Citation : Jaloyan1
ah tu ne le savais pas?
Je me demande quels genre de logiciels tu faisais sans incrémentation de pointeurs.


A priori, on peut faire beaucoup de choses sans avoir à incrémenter de pointeur.

Thierry

"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth

| FAQ-Python | FAQ-C - FAQ-c.l.c | FAQ-C++ - FAQ-Lite |
 
Hors ligne Jaloyan1 # Posté le 29/05/2008 à 18:52:26
Choisir = se priver du reste.
Avatar
Groupe : Membres
oui mais tout ce qui est chaines de caractères ca n'ira pas bien loin a mon avis.

Si quelqu'un vous dit : "Je me tue à vous le répéter", laissez-le mourir.
Image utilisateur
Image utilisateur
Image utilisateur

Chef du fan club de jaloyan1
 
Hors ligne freecircus # Posté le 29/05/2008 à 19:04:44
"Se coucher tard nuit"
Avatar
Groupe : Membres
@Jaloyan1> .. As-tu un exemple qui montre clairement qu'à un moment on n'a pas d'autre choix que d'incrémenter un pointeur (en opposition à l'indexation) pour traiter une chaîne ?
Ton avis tel quel, pour ma part, ne me suffit pas.
Édité le 29/05/2008 à 19:06:12 par freecircus

Générateurs de labyrinthes, "concours" tout langages, participez! :)
ma présentation
 
Hors ligne Jaloyan1 # Posté le 29/05/2008 à 19:22:17
Choisir = se priver du reste.
Avatar
Groupe : Membres
ben du genre une fonction qui met toute une chaine en majuscule.

Si quelqu'un vous dit : "Je me tue à vous le répéter", laissez-le mourir.
Image utilisateur
Image utilisateur
Image utilisateur

Chef du fan club de jaloyan1
 
Hors ligne Erosquare # Posté le 29/05/2008 à 19:30:39
Groupe : Membres
Citation : Jaloyan1
ah tu ne le savais pas?
Je me demande quels genre de logiciels tu faisais sans incrémentation de pointeurs.

ça devient exaspérant le ton supérieur que tu prends alors que toi-même tu ne sais pas coder. On peut très bien s'en passer.

Si tu préfères faire :
Code : C
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
#include <stdio.h>
#include <stdlib.h>

int main (int argc, char* argv[])
{
    char tab[] = "Pointeur";
    char *ptr = tab;

    while (*ptr != '\0')
    {
        printf("%c\n", *ptr);
        ptr++;
    }
    return EXIT_SUCCESS;
}


plutot que :

Code : C
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
#include <stdio.h>
#include <stdlib.h>

int main (int argc, char* argv[])
{
    char tab[] = "Pointeur";
    int i;

    for(i = 0; tab[i] != '\0'; i++)
        printf("%c\n", tab[i]);

    return EXIT_SUCCESS;
}


c'est que t'as un problème.

Image utilisateur
 
Hors ligne Jaloyan1 # Posté le 29/05/2008 à 19:32:24
Choisir = se priver du reste.
Avatar
Groupe : Membres
attend c'est quoi cette phrase?

Si tu préfère faire x plutot que x' c'est que t'as un problème.

Depuis quand on a un problème si on préfère une méthode a une autre?

Si quelqu'un vous dit : "Je me tue à vous le répéter", laissez-le mourir.
Image utilisateur
Image utilisateur
Image utilisateur

Chef du fan club de jaloyan1
 
Hors ligne freecircus # Posté le 29/05/2008 à 19:34:39
"Se coucher tard nuit"
Avatar
Groupe : Membres
@Erosquare > heu.. en pratique on préférera la première méthode. En principe on utilise des fonctions on peut donc se permettre de travailler directement sur l'adresse qu'elles reçoivent.

Petit raccourci tant qu'à faire :
Code : C
1
2
3
4
5
while (*ptr != '\0')
    {
        printf("%c\n", *ptr);
        ptr++;
    }

Code : C
1
2
while (*ptr)
     printf("%c\n", *ptr++);


Mais d'accord avec le fait qu'on peut totalement s'en passer.

edit : pour le fun
Secret (cliquez pour afficher)
Code : C
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#include <stdio.h>

int main(void)
{
  char *ptr = NULL;

  for(ptr="Pointeur";*ptr;ptr++)
    printf("%c\n",*ptr);

  return 0;
}
Édité le 29/05/2008 à 19:42:34 par freecircus

Générateurs de labyrinthes, "concours" tout langages, participez! :)
ma présentation
 
Hors ligne Jaloyan1 # Posté le 29/05/2008 à 19:36:12
Choisir = se priver du reste.
Avatar
Groupe : Membres
ah ca je ne le savais pas.

Quel genre de logiciel je pourrai bien faire sans ce principe?
Ben je ne sais pas.

(lol je refais le truc pour moi meme, justice pour tous!)

Si quelqu'un vous dit : "Je me tue à vous le répéter", laissez-le mourir.
Image utilisateur
Image utilisateur
Image utilisateur

Chef du fan club de jaloyan1
 
Hors ligne beta # Posté le 29/05/2008 à 19:54:11
Groupe : Membres
Vous qui parler de sécurité, incrémenté un pointeur pour se balader dans un tableau ne l'est pas !!!
Il arrive parfois que tout les variables d'un tableau ne soit pas à la suite dans la mémoire(c'est rare mais ça arrive),par exemple quand il n'y a plus d'espace mémoire assez grand à la suite et dans ce cas les différentes variable ne ce situant pas a des adresse qui se suivent ....
Cela dit maintenant les OS gère cela très bien mais quand même vous qui parler de sécurité.
Hors ligne Jaloyan1 # Posté le 29/05/2008 à 19:56:24
Choisir = se priver du reste.
Avatar
Groupe : Membres
ah bon j'en ai jamais entendu parler, je pensais que ca renvoyais NULL a l'allocation si il y a plus assez de place.

Si quelqu'un vous dit : "Je me tue à vous le répéter", laissez-le mourir.
Image utilisateur
Image utilisateur
Image utilisateur

Chef du fan club de jaloyan1
 
Hors ligne freecircus # Posté le 29/05/2008 à 19:57:35
"Se coucher tard nuit"
Avatar
Groupe : Membres
@beta > Dans ce cas là qu'elle serait la solution la plus sûre ? (en admettant que cela soit vrai, c'est pas ce que dit la norme m'enfin..)

fait un effort pour écrire.
Édité le 29/05/2008 à 19:59:40 par freecircus

Générateurs de labyrinthes, "concours" tout langages, participez! :)
ma présentation
 
Hors ligne beta # Posté le 29/05/2008 à 20:01:54
Groupe : Membres
Ce n'est plus quand il n'y a plus assez de place mais quand elle n'est plus placer a la suite dans la mémoire physique!!!
Mais comme je l'ais mis à la fin de mon message il n'y a pas de problème grâce a nos OS de "qualité", mais si tu en avais un nul (d'OS) cela pourrait causer des problèmes.
Hors ligne Jaloyan1 # Posté le 29/05/2008 à 20:03:43
Choisir = se priver du reste.
Avatar
Groupe : Membres
euh windows dos?
Avant quand la ram faisait 2 ko de mémoire?

Si quelqu'un vous dit : "Je me tue à vous le répéter", laissez-le mourir.
Image utilisateur
Image utilisateur
Image utilisateur

Chef du fan club de jaloyan1
 

Retour au forum "Langage C" ou à la liste des forums

Vous devez être inscrit pour pouvoir poster des messages

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 216 Zéros connectés | Requêtes SQL 7 requêtes | Temps de génération de la page : Total (SQL) 0.0301s (0.0129s)