Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

regexp en C

57 réponses
Avatar
Arno
Bonjour,

Voila je veut utiliser regcomp et regexec pour faire des comparaisons. J'ai
donc voulu faire un petit test pour commencer mais cella ne fonctionne pas.
Lors de l'execution, il me dit que les deux chaines ne sont pas les mêmes,
quelqu'un à une idée ?

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <regex.h>

int main (int argc, char **argv)
{
regex_t regexp;

if (!regcomp(&regexp, "192.168.0.22", REG_ICASE))
{
if (regexec(&regexp, "192.168.0.22", 0, NULL, 0))
printf("Match...\n");
else
printf("NO Match...\n");
}
return 0;
}

Merci.

--
Arno - Pour le mail : http://cerbermail.com/?P5oJnDlxNt

10 réponses

1 2 3 4 5
Avatar
Anthony
K. Ahausse wrote:


"Anthony" a écrit dans le message de
news:412b4c28$0$22041$
Attention, cette question n'a pas sa place ici logiquement. Ces fonctions
sont conformes à POSIX et non à C89 ou C99.


(-: Je me pose une question sommes-nous sur fr.comp.lang.c.norme.cx9 :-)

Je n'ai pas relue la charte récemment, mais je n'ai pas souvenir d'une
restriction si contraignante.


Pareil, cependant chaque fois qu'une question sur une extension POSIX est
posée ici elle recoit ce type de message (pour les souvenirs que j'en ai).
Etant donné que j'ai quand même répondu, j'ai précisé ca pour pas me faire
insulter de hors sujet ou quoi que ce soit :-)

Pour ma part je serai même pour répondre à toutes questions sur les
semaphores, les fork() ou autre ici, mais je pense pas que tout le monde
soit de mon avis.

A mon souvenir de la charte, ce groupe parle du langage en lui même, tel
qu'il est décrit dans la norme et implémentable sur toute architecture à
l'aide des outils adéquates. Je ne programme pas sous windows mais je ne
pense pas que les gens sous cet "OS" aient des fonctions reg*() :)

Anthony
--
It's a bird.. It's a plane..
No, it's KernelMan, faster than a speeding bullet, to your rescue.
Doing new kernel versions in under 5 seconds flat..
-- Linus, in the announcement for 1.3.27


Avatar
Jean-Marc Bourguet
Anthony writes:

A mon souvenir de la charte, ce groupe parle du langage en lui même,
tel qu'il est décrit dans la norme et implémentable sur toute
architecture à l'aide des outils adéquates.


La charte declare simplement "discussions autour du langage C" ou
quelque chose de tres proche. Elle conseille d'utiliser des groupes
plus adequats quand ils sont disponibles en citant fclc++ et fcomp.
Meme si certains le voudraient, rien ne limite la discussion a ce qui
est dans la norme.

Dans le cas de Posix, fr.comp.os.unix est vraissemblablement mieux que
fclc. Je repondrais en mettant une copie et le suivi sur ce fcou.

A+

--
Jean-Marc
FAQ de fclc: http://www.isty-info.uvsq.fr/~rumeau/fclc
Site de usenet-fr: http://www.usenet-fr.news.eu.org

Avatar
Laurent Wacrenier
Jean-Marc Bourguet écrit:
Dans le cas de Posix, fr.comp.os.unix est vraissemblablement mieux que
fclc. Je repondrais en mettant une copie et le suivi sur ce fcou.


Les discussions sur fr.comp.os.unix sont d'avantage axées sur le shell.
Pas sûr qu'il y ai un auditoire conséquent de programmeurs C.

Avatar
Jean-Marc Bourguet
Laurent Wacrenier <lwa@ teaser . fr> writes:

Jean-Marc Bourguet écrit:
Dans le cas de Posix, fr.comp.os.unix est vraissemblablement mieux que
fclc. Je repondrais en mettant une copie et le suivi sur ce fcou.


Les discussions sur fr.comp.os.unix sont d'avantage axées sur le shell.
Pas sûr qu'il y ai un auditoire conséquent de programmeurs C.


As-tu vu des questions sur l'utilisation des fonctions systemes rester
sans reponse?

A+

--
Jean-Marc
FAQ de fclc: http://www.isty-info.uvsq.fr/~rumeau/fclc
Site de usenet-fr: http://www.usenet-fr.news.eu.org


Avatar
K. Ahausse
"Anthony" a écrit dans le message de
news:412dca93$0$18794$
K. Ahausse wrote:


Pareil, cependant chaque fois qu'une question sur une extension POSIX est
posée ici elle recoit ce type de message (pour les souvenirs que j'en ai).


Oui, c'est vrai, on a tôt fait de te baffer si tu t'écartes de la norme.

Etant donné que j'ai quand même répondu, j'ai précisé ca pour pas me faire
insulter de hors sujet ou quoi que ce soit :-)


Pour le coup, c'est réussi :-))

Pour ma part je serai même pour répondre à toutes questions sur les
semaphores, les fork() ou autre ici, mais je pense pas que tout le monde
soit de mon avis.


Je suis aussi, globalement, de ton avis. La norme n'est pas le tout.

Avatar
Jean Claude Calvez
"K. Ahausse" a écrit dans le message
de news: cghm5h$pql$

"Anthony" a écrit dans le message de
news:412b4c28$0$22041$
Arno wrote:

Bonjour,


Salut,

Voila je veut utiliser regcomp et regexec pour faire des comparaisons.
J'ai donc voulu faire un petit test pour commencer mais cella ne
fonctionne pas. Lors de l'execution, il me dit que les deux chaines ne
sont pas les mêmes, quelqu'un à une idée ?



Attention, cette question n'a pas sa place ici logiquement. Ces
fonctions


sont conformes à POSIX et non à C89 ou C99.


(-: Je me pose une question sommes-nous sur fr.comp.lang.c.norme.cx9 :-)

Je n'ai pas relue la charte récemment, mais je n'ai pas souvenir d'une
restriction si contraignante.


Si la charte est bien ce qui est désigné sous le terme de
"conseils d'utilisation" et publié ici 2 fois par mois, moi
non plus je n'y ai vu aucun des mots "norme", "standard",
"ANSI", "ISO"

JCC



Avatar
Laurent Wacrenier
Jean-Marc Bourguet écrit:
Les discussions sur fr.comp.os.unix sont d'avantage axées sur le shell.
Pas sûr qu'il y ai un auditoire conséquent de programmeurs C.


As-tu vu des questions sur l'utilisation des fonctions systemes rester
sans reponse?


Les fonctions Posix ne sont pas nessessairement système. Sinon, dans
fr.comp.os.unix il n'y a tout au plus que quelques questions sur le C
par mois. Nettement moins qu'ici malgré les nombreuses récrimination.
Sinon, il m'est arrivé de répondre à des questions sur le C POSIX dans
fr.comp.os.unix uniquement parce que personne n'y répondait. C'est
bien malheureux quand on voit ici les threads infinis sur le fait de
caster malloc() ou non.

Voici les groupes évoqués pour poser sa question :

- fr.comp.lang.c : on se fait massivement engueuler quand on pose une
question sur une fonction qui n'est pas dans la Norme.

- fr.comp.os.unix : aucune question sur le C visible, tous les
threads parle du shell, donc personne ne pose de question. Comme il
n'y a peu d'auditoire, il y a peu de réponses si la question
n'est pas triviale.

- fr.comp.developpement : groupe non ciblé, ça parle de tout et
de n'importe quoi.

Bref, mieux vaut donc ne pas avoir de question.

Il faut aussi noter que d'autres systèmes qu'unix ont une API Posix.
Le mec avec un de ces système que se voit rembarrer sur un groupe unix
ne va pas comprendre et s'il pose la question dans le groupe, les
réponses éventuelles seront nessessairment limitées.


Avatar
Johann Dantant
"Anthony" a écrit dans le message de
news:412dca93$0$18794$

[snip]

Pareil, cependant chaque fois qu'une question sur une extension POSIX est
posée ici elle recoit ce type de message (pour les souvenirs que j'en ai).
Etant donné que j'ai quand même répondu, j'ai précisé ca pour pas me faire
insulter de hors sujet ou quoi que ce soit :-)

Pour ma part je serai même pour répondre à toutes questions sur les
semaphores, les fork() ou autre ici, mais je pense pas que tout le monde
soit de mon avis.

A mon souvenir de la charte, ce groupe parle du langage en lui même, tel
qu'il est décrit dans la norme et implémentable sur toute architecture à
l'aide des outils adéquates. Je ne programme pas sous windows mais je ne
pense pas que les gens sous cet "OS" aient des fonctions reg*() :)


Bon, c'est très calme en ce moment, et puis je pars en vacances demain, donc
je propose lachement ma contribution à ce vaste sujet même si ça relève
toujours plus de la philosophie que de la technique...

D'abord, je voudrais rappeler qu'un des grandes avantages du C c'est de
pouvoir être compilé partout. Toute bibliothèque dont les sources C sont
disponibles a de bonne chance de tourner sur autre chose qu'Unix. Alors,
oui, sous Windows, on peut connaître les fonctions reg*(), il suffit de se
trouver une librairie qui va bien soit sous forme binaire (DLL), soit sous
forme de source, et ça marche exactement comme ailleurs...

Ensuite, je crois me souvenir que POSIX est là pour proposer une API plus ou
moins indépendante du noyau sous-jacente (hum... corrigez moi si je me
trompe, mais le besoin premier n'était-il pas de rendre les Unixes
compatible entre eux ???). Là encore, rien n'empêche ne proposer une couche
POSIX sur un noyau Windows. Depuis le début de la famille NT on l'a doté
d'un "sous-système POSIX" (même si j'avoue ne pas vraiment savoir ce que
recouvre ce vocable), et en tout cas plusieurs bibliothèques (je pense à
pthreads pour les sémaphores par exemple) permettent à un programme C
utilisant l'API POSIX de se promener tranquillement entre Unix et Windows
(de la même manière, les sockets d'origine Berkeley permettent d'écrire du
code portable, passé l'étape de l'initialisation de Winsock).

Enfin, il y a des gens (Cygwin) qui vont jusqu'à fournir sous Windows une
belle DLL qui propose fork(), signal() et autres Unixismes pour Windows NT.

Tout ça pour dire qu'une question concernant POSIX ou les regexp n'est pas
forcément une question Unix. Concerne-t-elle pour autant le langage C, qui
fait l'objet de ce groupe ? Non, car la charte précise clairement :

Ce groupe est dédié aux discussions autour du langage C.
En particulier, il est recommandé que les discussions
sur les différentes API, librairies et environnements de
compilation des éditeurs de compilateurs pour MS-Windows
se déroulent dans fr.comp.ms-windows.programmation.


(Bon, d'accord, elle ne précise pas explicitement que les différents API
pour Unix / Linux se déroulent dans fr.comp.os.unix, mais bon, par analogie
c'est bien logique, même si pour le coup il manquerait un
fr.comp.os.unix.programmation , et pourquoi pas
fr.comp.os.posix.programmation ?)

Personnellement, je considère donc que les questions concernant les
différentes API (pourquoi ça linke pas, quels sont les paramètres à passer,
pourquoi ça marche pas...) n'ont vraiment rien à faire ici... Par contre la
résolution de la question initiale a montré qu'il s'agissait d'un pur
problème de C (test d'une valeur de retour erronée). La frontière est certes
ténue, mais en l'occurence la question d'Arno a trouvé sa place
ici -certainement à l'insue de son plein grès-.

Bon, sur ce, je me tais.

Johann
--
BC> désolé, mais j'ai pas pû m'empecher.
On a vu, mais bon, vraiment fallait pas, vous ne manquiez pas encore
assez.
-+- RM in <http://neuneu.mine.nu> : En période de manque -+-

Avatar
Johann Dantant
"Laurent Wacrenier" <lwa@ teaser . fr> a écrit dans le message de
news:
Les fonctions Posix ne sont pas nessessairement système. Sinon, dans
fr.comp.os.unix il n'y a tout au plus que quelques questions sur le C
par mois. Nettement moins qu'ici malgré les nombreuses récrimination.
Sinon, il m'est arrivé de répondre à des questions sur le C POSIX dans
fr.comp.os.unix uniquement parce que personne n'y répondait. C'est
bien malheureux quand on voit ici les threads infinis sur le fait de
caster malloc() ou non.


Certes.

Voici les groupes évoqués pour poser sa question :

- fr.comp.lang.c : on se fait massivement engueuler quand on pose une
question sur une fonction qui n'est pas dans la Norme.


Pour être juste, je dirais qu'on se fait rembarrer quand la question
concerne de manière manifeste l'utilisation d'une API particulière, et non
pas le simple accès à cette API en C... Dernière exemple manifeste : "Je
voudrais savoir comment recuperer des données utilisateurs sous windows (NT,
2000 et XP)" (Crepitus le 17/08/04)... Par contre l'OP de ce fil a posé une
question concernant certes les regexp, mais en proposant un bout de code en
C qui permettait de bien cerner son problème, il a donc sa place ici je
pense.

- fr.comp.os.unix : aucune question sur le C visible, tous les
threads parle du shell, donc personne ne pose de question. Comme il
n'y a peu d'auditoire, il y a peu de réponses si la question
n'est pas triviale.


Surement...

- fr.comp.developpement : groupe non ciblé, ça parle de tout et
de n'importe quoi.


Je confirme...

Bref, mieux vaut donc ne pas avoir de question.


Non, je pense plutôt qu'il faut apprendre à formuler correctement une
question. Si c'est une simple question sur une API (les noms propres dans le
dictionnaire du développeur...), il faut poser la question sur un groupe
consacré à cette API, c'est certain... Si c'est une simple question sur le
langage lui même (les noms communs et la grammaire), elle a sa place sur le
groupe consacré au langage... Maintenant, si c'est une question qui mèle les
2, il faut aprendre à la décomposer en facteurs premiers...

[couic]

Johann
--
Règle générale, afin d'avoir un vol stable, il faut pointer l'avant de
l'avion
dans la direction où on veut aller.
-+- FAQ fr.rec.aviation : règles de base -+-

Avatar
Laurent Wacrenier
Johann Dantant écrit:
Pour être juste, je dirais qu'on se fait rembarrer quand la question
concerne de manière manifeste l'utilisation d'une API particulière, et non
pas le simple accès à cette API en C... Dernière exemple manifeste : "Je
voudrais savoir comment recuperer des données utilisateurs sous windows (NT,
2000 et XP)" (Crepitus le 17/08/04)... Par contre l'OP de ce fil a posé une
question concernant certes les regexp, mais en proposant un bout de code en
C qui permettait de bien cerner son problème, il a donc sa place ici je
pense.


Surtout qu'on ne peut pas demander à un débutant de connaitre de
quelle norme dépend la fonction qu'il utilise, surtout si aucune
extension particulière n'est nessessaire à la compilation (mais dans
le cas que tu site, il savait visblement que ce n'était pas du
standard). On ne fait attention à ce genre de chose que lorsqu'on
essaye de faire du code portable.

1 2 3 4 5