bonjour,

j'ai du ma a concaténer 2 chaîne, la la fonction strcat me renvoie l'erreur : SIGSEGV

Voici le code :
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
int main () {
 
  int fd;
  char *num;
  char c;
  struct termios  termios_p;
 
  /* Ouverture de la liaison serie */
  fd = open(PORT, O_RDWR | O_NOCTTY);
  if (fd <0) {perror(PORT); exit(-1); }
 
  /* Lecture des parametres courants */     
  tcgetattr(fd,&termios_p);            
  /* On ignore les BREAK et les caracteres avec erreurs de parite */ 
  termios_p.c_iflag = IGNBRK | IGNPAR;   
  /* Pas de mode de sortie particulier */   
  termios_p.c_oflag = 0;     
  /* Liaison a 9600 bps avec 8 bits de donnees et une parite paire */
  termios_p.c_cflag = B9600 | CS8 | CLOCAL | CREAD;
  /* Mode non-canonique avec echo */ 
  termios_p.c_lflag = ECHO; 
  /* Caracteres immediatement disponibles */
  termios_p.c_cc[VMIN] = 1;
  termios_p.c_cc[VTIME] = 0;
  /* Sauvegarde des nouveaux parametres */ 
  tcsetattr(fd,TCSANOW,&termios_p);
 
  /* Boucle de lecture du port  */
  while(1){    
 
    strcpy (&c, "");
    strcpy (&num, "");    
 
    while(c!=0x0a){
      read(fd, &c, 1);
      printf("%c\n",c);
      strcat (num,&c);
    }    
 
    printf("%s\n",num);  
  }
 
close(fd);   
 
return 0;
}
Bon alors voilà c'est le strcat dans le 2nd while qui me pose problème.

Le but du programme et de récupérer caractère par caractère ce qui passe sur le port série et concaténer ces caractère jusqu'à la lecture d'un \n (0x0a) (2ème boucle while). Une fois le \n détecté on efface la chaine et on recommence (1ère boucle while).