OVH Cloud OVH Cloud

Position sous-chaine

133 réponses
Avatar
Francois Cartegnie
Hello,

Je cherche un moyen de connaitre la position d'une occurence dans une chaine


J'ai essayé :
temp = strstr(bufferspace, "truc");
taille = temp-bufferspace;
Ne fonctionne pas car temp peut prendre la valeur NULL et donc le
compilateur refuse.

Etant dans l'espace noyau, je n'ai accès qu'a des fonctions sortant un
pointeur, et non la position.

Cordialement,

3 réponses

Avatar
Gabriel Dos Reis
--=-=- Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit

Vincent Lefevre <vincent+ writes:

| Dans l'article ,
| Gabriel Dos Reis écrit:
|
| > Vincent Lefevre <vincent+ writes:
|
| > | Dans l'article ,
| > | Gabriel Dos Reis écrit:
| > |
| > | > mouais, mais alors le même argument s'applique pour la conversion
| > | > implicite void* -> T* pour n'importe quel T, type d'objet. Cette
| > | > conversion implicite est beaucoup plus pernicieuse que l'arithmétique.
| > |
| > | Pourquoi? Le programmeur n'est-il pas censé connaître son langage et
| > | programmer en conséquence?
|
| > Oui et alors ? Tu n'as jamais fait d'erreur ?
|
| Il semble alors que tu sois devenu plus sage,

Plus sage ?

--=-=- Content-Type: text/plain; charset=iso-8859-15
Content-Transfer-Encoding: quoted-printable


Je n'ai jamais fait mystère de mon penchant pour les système de types
avancés.

--=-=- Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit


| car quand je (ou autres utilisateurs) me plaignais de certains
| choix du C, tu n'étais pas du même avis. Il devait y avoir le fait
| de pouvoir utiliser
|
| for (...)
| blah();
|
| au lieu d'un
|
| for (...)
| {
| blah();
| }

--=-=- Content-Type: text/plain; charset=iso-8859-15
Content-Transfer-Encoding: quoted-printable


Ça ne concerne pas le système de type.

--=-=- Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit


| obligatoire et autres choses du genre, ainsi que l'utilité des warnings
| d'un compilo.

--=-=- Content-Type: text/plain; charset=iso-8859-15
Content-Transfer-Encoding: quoted-printable


Je crois que le désaccord sur ce point n'a pas disparu : rendre
optionel, oui. Obligatoire non.

-- Gaby


--=-=-=--
Avatar
Emmanuel Delahaye
In 'fr.comp.lang.c', Laurent Deniau wrote:

et tripafouiller de la mémoire brute. C classic, utilisait char. Le
comité a introduit void* à la place, mais n'a pas étandu les règles
d'arithmétique de pointeur. Bien sûr, on peur caster void* and char*
et faire l'arithmétique, mais il aurait été plus simple d'avoir
l'arithmétique directement une fois que le pas a été franchis.


Par forcement (en tout cas c'est pas mon avis). On peut utiliser void*
pour faire de l'ADT, et authoriser une arithmetique dessus peut-etre
dangereux pour qui manipulerait par inadvertance des pointeurs de ce
type.


Tout à fait d'accord. (Pratique quotidienne)

--
-ed- [remove YOURBRA before answering me]
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
<blank line>
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/


Avatar
Emmanuel Delahaye
In 'fr.comp.lang.c', "Antoine Leca" wrote:

Laurent Deniau écrivit:
Typiquement mon ADT en C ressemble a ca:


Heu, excusez la question du Neu-neu, ADT, que es aco?


Abstract Data Type, mais je n'ose pas croire que tu l'ignorais...

--
-ed- [remove YOURBRA before answering me]
The C-language FAQ: http://www.eskimo.com/~scs/C-faq/top.html
<blank line>
FAQ de f.c.l.c : http://www.isty-info.uvsq.fr/~rumeau/fclc/