Tout d'abord, je sais que mon titre ressemble à une question fréquemment posée, mais écoutez-moi. Quand je dis «arguments d'analyse», je ne parle pas des arguments de ligne de commande qui sont transmis au programme au démarrage. J'essaye de créer un système séparé pour recevoir des commandes et les analyser dans l'exécution.Analyse des arguments en C++
principal:
int main(int argc, char *args[])
{
cout << "Started up." << endl;
reloop();
}
// Main execution point. Prints text to the console and moves to a void:
void reloop()
{
char *str;
cin >> str;
parseargs(str);
}
// Starts waiting for inputted data, if found, move onto parseargs void.
void parseargs(char *args)
{
char *strings[10];
char delim[] = " ";
int i = 0;
strings[i] = strtok(args,delim);
if(strings[0] == "try")
{
cout << "WORKED!" << endl;
reloop();
}
else
{
cout << "Na. Didn't work." << endl;
reloop();
}
}
// Takes the arguments passed to it, splits them via a space and passes them to an array. From here, compares the first entry in the array to a command. If they equal, output success note.
Maintenant, je suis un programmeur C# pour un certain temps et ont tout juste commencé C++ .. Qu'est-ce que je fais mal? Lorsque le programme démarre, une erreur arrive avec:
Debug Assertion Failed!
Program: C:\Windows\system32\MSVCP110D.dll
File: c:\program files\microsoft visual studio 11.0\vc\include\istream
Line: 990
Expression: Invalid null pointer
* Note: J'ai des déclarations pour chacune des fonctions en haut du fichier RPC.
Quelle est la ligne 990? –
Et vous ne pouvez pas comparer les chaînes 'char *' en utilisant '=='. Utilisez 'strcmp()' ou regardez 'std :: string'. Est-ce que 'cin >> char *' fonctionne réellement? Il n'y a pas de mémoire allouée sauf si cin le fait pour vous. Regarde suss pour moi! Et puis il y a la pile. Votre pile ne cesse de grossir chaque fois que l'analyse échoue ... – John3136
Vous avez bien sûr réduit le problème à la ligne qui cause l'erreur, n'est-ce pas? – JJJ