Question

J'ai ce programme en c ++:

#include <iostream>
using namespace std;
int main()
{
char buf[50];
cin.getline(buf,49);
system(buf);
return 0;
}

Lorsque je l'exécute, que je le compile et que je tape par exemple "helo", mon programme affiche l'erreur:

  "helo" not found.

Puis-je empêcher cette erreur de s'afficher? Est-il possible de désactiver l'erreur à partir de la commande système?

Était-ce utile?

La solution

Vous ne pouvez pas modifier la manière dont system affiche les erreurs. C et C ++ n'imposent que très peu, voire pas du tout, d'implémentations à cet égard, de sorte qu'une grande partie de celle-ci ne soit pas spécifiée, afin de leur permettre d'être aussi souples que possible.

Si vous souhaitez un contrôle plus précis, vous devez utiliser les fonctions de votre bibliothèque d'exécution ou de l'interface du système d'exploitation. Essayez execvp (voir man execvp ) dans linux / unix ou la fonction CreateProcess pour les systèmes Windows, qui utilise l'API Windows qui permet un contrôle optimal de la gestion des erreurs et autres.

Autres conseils

Êtes-vous sur Linux? Essayez de taper "./ bonjour"

.

Si cela fonctionne, la raison en est que le répertoire en cours (".") ne figure pas dans le chemin de recherche. Vous devez indiquer que le programme compilé est " là " dans le répertoire.

Vous pouvez également faire quelque chose comme

export PATH = $ PATH:.

Ceci ajoute ". " (répertoire en cours) vers le chemin de recherche.

Si vous êtes sur Windows, essayez "hello.exe"

.

Si vous êtes sous Linux, pouvez-vous essayer de rediriger la sortie d'erreur vers le périphérique null ?

strcat(buf, "2> /dev/null");
system(buf);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top