Salut,

Je voudrais savoir s'il est acceptable d'effectuer des opérations sur les pointeurs, comme dans la ligne:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
return (int)(ptr_2 - ptr_1);
Je n'ai rien trouvé de mieux pour trouver l'offset d'une chaine à l'intérieur d'une autre.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
#include <stdio.h>
#include <string.h>
 
#define PATTERN_NOT_FOUND -1
 
int position(char* str_1, char*str_2);
int position(char* str_1, char*str_2)
{
    char* ptr_1 = &str_1[0];
    char* ptr_2 = strstr(str_1,str_2);
    if(ptr_2 == NULL)
    {
        return PATTERN_NOT_FOUND;
    }
    else
    {
        return (int)(ptr_2 - ptr_1);
    }
}
 
int main()
{
    char str_1[] = "Hello World!";
    char str_2[] = "World";
    int pos = position(str_1,str_2);
 
    if(pos != PATTERN_NOT_FOUND)
        printf("\"%s\" found at offset %d in \"%s\"\n",str_2,pos,str_1);
    else
        printf("\"%s\" not found in \"%s\"\n",str_2,str_1);
    return 0;
}
A+

Pfeuh