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,

10 réponses

1 2 3 4 5
Avatar
DINH Viêt Hoà

In 'fr.comp.lang.c', "Ivan Vecerina" wrote:

De toute maniere, pourquoi ne pas preferer ecrire du code
portable C/C++ lorsque ca ne coute rien ?


Les langages C et C++ sont différents. Lorsque tu sauras de quoi tu parles,
tu pourras revenir ici donner tes bons conseils.


et pan !

--
DINH V. Hoa,

"monde de merde" -- Erwan David


Avatar
Gabriel Dos Reis
Emmanuel Delahaye writes:

| In 'fr.comp.lang.c', "Ivan Vecerina" wrote:
|
| > De toute maniere, pourquoi ne pas preferer ecrire du code
| > portable C/C++ lorsque ca ne coute rien ?
|
| Les langages C et C++ sont différents. Lorsque tu sauras de quoi tu parles,
| tu pourras revenir ici donner tes bons conseils.

C'est possible mais ta réponse précédente n'offre pas le moindre
début de soupçon d'ombre comme quoi tu sais de quoi tu parles.

Alors, hôpital qui se fout de la charité ?

-- Gaby
Avatar
Gabriel Dos Reis
Emmanuel Delahaye writes:

| In 'fr.comp.lang.c', Francois Cartegnie wrote:
|
| > argh.. j'ai trouvé. j'ai un unsigned char * et un char * .
| > Ca me donne pas la raison de l'erreur, etant donné qu'ils sont codés sur
| > le même nb de bits et que j'avais aussi essayé de soustraire en les
|
| Mais le type est différent. Cependant, je pense qu'en C, ça ne méritait qu'un
| warning.

Pour quelles raisons ?

|
| > forçant en unsigned char avant la soustraction.
|
| est-tu sûr que tu utilises un compilateur C et non C++?

qu'est-ce que ça change en ce qui concerne unsigned char* et char* ?

-- Gaby
Avatar
Jalico
Là il semble que ce soit toi qui ne saches pas de quoi tu parles ...

"Gabriel Dos Reis" a écrit dans le message de
news:
Emmanuel Delahaye writes:

| In 'fr.comp.lang.c', Francois Cartegnie wrote:
|
| > argh.. j'ai trouvé. j'ai un unsigned char * et un char * .
| > Ca me donne pas la raison de l'erreur, etant donné qu'ils sont codés
sur

| > le même nb de bits et que j'avais aussi essayé de soustraire en les
|
| Mais le type est différent. Cependant, je pense qu'en C, ça ne méritait
qu'un

| warning.

Pour quelles raisons ?

|
| > forçant en unsigned char avant la soustraction.
|
| est-tu sûr que tu utilises un compilateur C et non C++?

qu'est-ce que ça change en ce qui concerne unsigned char* et char* ?

-- Gaby


Avatar
Ivan Vecerina
"Emmanuel Delahaye" wrote in message
news:
| In 'fr.comp.lang.c', "Ivan Vecerina" wrote:
|
| > De toute maniere, pourquoi ne pas preferer ecrire du code
| > portable C/C++ lorsque ca ne coute rien ?
|
| Les langages C et C++ sont différents. Lorsque tu sauras de quoi tu
parles,
| tu pourras revenir ici donner tes bons conseils.

Te t'invite a te referer a la reponse que j'ai donnee a Erwan David.
Que reproches-tu exactement au conseil que j'ai donne ?

| Mais le type est différent. Cependant, je pense qu'en C,
| ça ne méritait warning.

As-tu seulement une fois lu et compris le standard ISO C ?

Ivan
--
http://www.post1.com/~ivec
Avatar
Francois Cartegnie
Mais le type est différent. Cependant, je pense qu'en C, ça ne méritait qu'un
warning.
mais l'erreur donnée n'est pas une erreur de typage.


forçant en unsigned char avant la soustraction.



est-tu sûr que tu utilises un compilateur C et non C++?

Mets ça dans ton code (n'importe où)

#ifdef __cplusplus
#error Please use a C-compiler
#endif



GCC 3.2...


Avatar
Ivan Vecerina
"Francois Cartegnie" wrote in message
news:bgofqt$cia$
| > Mets ça dans ton code (n'importe où)
| >
| > #ifdef __cplusplus
| > #error Please use a C-compiler
| > #endif
| >
|
| GCC 3.2...

Personellement, je laisserais l'adjonction de ces
trois lignes de code aux acharnés obscurantistes.
Cependant...

Comme d'autre compilateurs C/C++, GCC permet de compiler
en mode stricte ANSI C.
Si tu souhaites pouvoir mettre ces 3 lignes dans ton code,
je pense que le parametre suivant dans la ligne de commande
fera l'affaire:
-stdÉ9
Ce genre d'option de compilation peut être utile pour
s'assurer que le code écrit sera plus portable vers
d'autres compilateurs C.

Ivan
--
http://www.post1.com/~ivec
Avatar
Francois Cartegnie
Francois Cartegnie wrote:
Mais le type est différent. Cependant, je pense qu'en C, ça ne
méritait qu'un warning.


mais l'erreur donnée n'est pas une erreur de typage.

forçant en unsigned char avant la soustraction.




est-tu sûr que tu utilises un compilateur C et non C++?

Mets ça dans ton code (n'importe où)

#ifdef __cplusplus
#error Please use a C-compiler
#endif



GCC 3.2...



Pour exemple, ce code passe pas a la compilation et génère un
" invalid operands to binary - "
au lieu d'un warning.


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

main(int argc, char* argv)
{

char * a; unsigned char * b;
b = strstr(a, "truc");
int size = b - a;
}



Avatar
DINH Viêt Hoà

Comme d'autre compilateurs C/C++, GCC permet de compiler
en mode stricte ANSI C.


Tu feras attention. Lorsque tu parles de compilateurs C/C++, il paraît
dans un premier temps évident à tout le monde que tu penses que le C++
n'est qu'un ajout de mots-clefs par rapport au C et que tout code C
passerait dans un compilateur qu'il soit C++ ou C.

--
DINH V. Hoa,

"monde de merde" -- Erwan David

Avatar
Ivan Vecerina
"Erwan David" wrote in message
news:
| "Ivan Vecerina" écrivait :
|
| > Te t'invite a te referer a la reponse que j'ai donnee a Erwan David.
| > Que reproches-tu exactement au conseil que j'ai donne ?
|
| Que si on programme en C c'ets pas pour s'emmerder avec la
| sémantique d'un autre langage fut-il proche.

Lorsque le standard C99 a ete publie, j'ai rapidement ete a l'aise
avec des nouveautes telles que 'const', 'bool' ( ou '_Bool' ),
'inline', et d'autres extensions qui sont apparues en premier en C++.

Le fait de connaître et de programmer en C (je donne dans de l'embarque
en ce moment) me prepare egalement au futur C++.

Les mondes du C et du C++ ne sont pas hermetiquement separes.
De nombreux developpeurs codent dans ces deux languages.


Professionellement, il est extremement utile de comprendre et de
pouvoir utiliser non seulement ces languages, mais egalement Perl,
Python, C#, Java, PHP, Scheme, etc etc.

N'est-il pas utile de pouvoir choisir toujours l'outil le mieux adapté?


Peut-etre a consulter:
http://www.pragmaticprogrammer.com/ppbook/extracts/rule_list.html
http://www.research.att.com/~bs/sibling_rivalry.pdf


Maintenant, certes, on peut choisir de s'en tenir a un seul languages.
Mais de la a traiter d'ignorants ceux qui ont l'esprit plus ouvert ?


Amicalement,
Ivan

--
http://www.post1.com/~ivec
1 2 3 4 5