Je rencontre des difficultés pour essayer cette erreur de segmentation d'exécution dans ce court morceau de code. Je soupçonne que cela a quelque chose à voir avec l'utilisation de system() et strcpy() dans le code mais comme je n'ai pas l'expérience de ce type d'erreur, je ne sais pas quoi faire et je n'ai pas trouvé beaucoup de pages utiles jusqu'ici.Erreur de segmentation (core dumped) erreur avec strcpy() (suspectée)
Le code:
#include <stdio.h>
#include <string.h>
int main(){
char command[31], string[128];
strcpy(string, (char *)system("grep -Po '(?<=testString\\s)\\S+' File"));
string[strlen(string)] = '\0';
printf("%s", string);
return 0;
}
J'utilise GCC 4.7.3 pour compiler le programme. J'apprécierais vraiment n'importe quelle aide avec ceci beaucoup.
Vous castez la valeur de retour 'int' de [' installation privée] (http://linux.die.net/man/3/system) à un chaîne ... Aucun bien ne peut venir de ça. –
Votre utilisation de 'system' est incorrecte, vous pouvez utiliser [popen (3)] (http://man7.org/linux/man-pages/man3/popen.3.html) –
Lorsque vous utilisez un système ou API autre, vous devriez lire la documentation concernant cet appel pour déterminer ce qu'il accepte et retourne. 'system' ne retourne pas la sortie de la commande que vous exécutez. Il fournit seulement un code de retour. Si vous voulez capturer la sortie, vous pouvez avoir la sortie de l'appel 'system' dans un fichier que vous ouvrez et lisez après l'appel, ou utiliser des pipes (' popen', etc). – lurker