Bonjour,
Ça fait deux jours que je me casse la tête là dessus et je ne parviens pas à trouver mon erreur
Surtout qu'il m'a semblé que mon programme fonctionnait à la première utilisation, puis le lendemain... plus rien

Enfin quand je dis "plus rien", voici ce qu'il me donne quand je l'exécute et que je rentre "Thomas" sur l'entrée standard (de Windows) :



Voici le programme :

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
 
char * formatChaine (const char * chaine);
int estIP(const char * chaine);
 
int main(void)
{
    char * chaine;
    char result[30];
    chaine = (char*) malloc(20);
    strcpy(result,"ping -t ");
    printf("Ping sur ?\n");
    gets(chaine);
    chaine = formatChaine(chaine);
    if (strcmp(chaine,"thomas")==0)
    {
       strcat(result,"192.168.1.11");
    }
    else if (strcmp(chaine,"cecile")==0)
    {
         strcat(result,"192.168.1.12");
    }
    else if (estIP(chaine))
    {
         strcat(result,chaine);
    }
    else
    {
        printf("Adresse incorrecte !\n");
        system("PAUSE");
        exit(0);
    }
    system(result);
    return 0;
}
 
char * formatChaine (const char * chaine)
{
     char * s;
     s=(char*)malloc(strlen(chaine));
     strcpy(s,chaine);
     int i;
     for(i = 0; i < strlen(chaine); i++)
     {
           s[i] = tolower(s[i]);
           switch(s[i])
           { 
            case 0x82:
            case 0x88:
            case 0x89:
            case 0x8a: s[i]='e'; break;
            case 0xa0:
            case 0x83:
            case 0x84:
            case 0x85:
            case 0x86: s[i]='a'; break;
            case 0x87: s[i]='c'; break;
            case 0x93:
            case 0x94:
            case 0x95:
            case 0xa2: s[i]='o'; break;
            case 0x96:
            case 0x97:
            case 0xa3:
            case 0x81: s[i]='u'; break;
            default: break;
           }
     }
     return(s);
}
 
int estIP (const char * chaine)
{
    int n1;
    int n2;
    int n3;
    int n4;
    int compteurPoint = 0;
    int i;
    for(i = 0; i < strlen(chaine); i++)
    {
          if (chaine[i] == '.')
          {
             compteurPoint++;
          }
    }
    if (compteurPoint !=3)
       return 0;
    sscanf(chaine,"%d%*[.]%d%*[.]%d%*[.]%d",&n1,&n2,&n3,&n4);
    return(192 <= n1 && n1 < 224 && 0 < n2 && n2 < 255 && 0 < n3 && n3 < 255 && 0 < n4 && n4 < 255);
}
Je ne comprends même pas pourquoi cela me donne un tel résultat...
Merci d'avance à ceux qui m'aideront à avancer