Bonjour toutes et à tous,

J'ai un problème d'ajout de chaîne de caractères dans un tableau de pointeur char* qui est doit contenir l'adresse IP tapé après un CONNECT
exemple:
CONNECT 1.1.1.1.

Je poste mon code si vous arrivé avoir c'est quoi qui cloche dans mon 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
 
 
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
 
#define PORT 5555 // the port client will be connecting to 
 
#define MAXDATASIZE 100 // max number of bytes we can get at once 
 
#define IP_ADDR "127.0.0.1"
 
/*
LE clien 
*/
 
int main(int argc, char *argv[])
{
	int sockfd, numbytes,i,j;
	int nbs=0;
	char buf[MAXDATASIZE];
	char *ServerAdr[4];//tableau de 4 adresse
	for(i=0;i<4;i++)ServerAdr[i]="vide";//initialisation
	char cp[255];
	char *ligne,*Pligne;
	struct sockaddr_in sock_server; //structure qui va contenir les information sur le serveur
	int s;
 
	while(gets(ligne)){
		//la ligne entré par l'utilisateur
 
		if(!strcmp(ligne,"exit"))exit(0);
 
		strcpy(cp,ligne);
		Pligne=strtok(ligne," ");
		if(!strcmp(Pligne,"CONNECT")){//la cas d'une connection
			Pligne=strtok(NULL," ");//on pointe sur l'adresse ip à stocker
			//stockage de l'adresse du serveur
			for(j=0;j<4;j++) printf("cette adresse AVANT: %s\n",ServerAdr[j]);
			for(i=nbs;i<4;i++){
			//on parcoure le tableau des serveurs jusqu'à ce qu'on trouve une place libre
					printf("valeur pour i = %d: %s\n",i,ServerAdr[i]);
				if(!strcmp(ServerAdr[i],"vide")){
					//ServerAdr[i]=Pligne;
					ServerAdr[i]=(char *)malloc(sizeof(*Pligne));
					strcpy(ServerAdr[i],Pligne);
					printf("Cette adresse vient d'etre ajouté:%s dans l'indice %d \n",ServerAdr[i],i);
 
					nbs++;
					break;
				}
 
			}
 
 
		}
 
		//else{//le cas d'un envoie de message
 
			for(j=0;j<4;j++){
 
				printf("cette adresse APRES: %s\n",ServerAdr[j]);
 
// 				if(strcmp(ServerAdr[j],"vide")){
// 				printf("Ce message: %s pour ",cp);
// 				printf("cette adresse: %s\n",ServerAdr[j]);
// 				}
			}
 
		//ligne=NULL;
		//}
	}	
	return 0;
}