Pb avec fonction strcat ?
bonjour,
j'ai du ma a concaténer 2 chaîne, la la fonction strcat me renvoie l'erreur : SIGSEGV
Voici le code :
Code:
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).
Re: Pb avec fonction strcat ?
Citation:
Envoyé par olivier857
j'ai du ma a concaténer 2 chaîne, la la fonction strcat me renvoie l'erreur : SIGSEGV
Il y a des précautions d'emploi.
- Le tableau de char de destination doit être modifiable
- Il doit être initialisé.
- Il doit être de taille suffisante
- La source doit être un chaine valide.
Citation:
Voici le code :
Les critères énoncés ne sont pas respéctés...