#include <stdio.h>
#include <string.h>
struct Consigne
{
char nom[8];
long valeur;
};
// les consignes et leurs valeurs par défaut.
Consigne consignes[] =
{
{ "tem", 2000 },
{ "lum", 1000 },
{ "pow", 500 }
};
int main()
{
char entree[] = "pow=5000";
Consigne consigne;
if ( sscanf( entree, "%7[^ =]%*[ =]%ld", consigne.nom, &consigne.valeur ) == 2 )
{
bool consigneInconnue = true;
for ( int i = 0; i < sizeof(consignes) / sizeof(Consigne); i++ )
{
if ( !strcmp( consignes[i].nom, consigne.nom ) )
{
consigneInconnue = false;
consignes[i].valeur = consigne.valeur;
printf( "Consigne \"%s\" modifiée à %ld.\n", consigne.nom, consigne.valeur );
break;
}
}
if ( consigneInconnue )
{
printf("Consigne \"%s\" inconnue.\n", consigne.nom );
}
}
else
{
printf("Commande \"%s\" inconnue.\n", entree );
}
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdHJpbmcuaD4KCnN0cnVjdCBDb25zaWduZQp7CgljaGFyIG5vbVs4XTsKCWxvbmcgdmFsZXVyOwp9OwoKLy8gbGVzIGNvbnNpZ25lcyBldCBsZXVycyB2YWxldXJzIHBhciBkw6lmYXV0LgpDb25zaWduZSBjb25zaWduZXNbXSA9CnsKCXsgInRlbSIsIDIwMDAgfSwKCXsgImx1bSIsIDEwMDAgfSwKCXsgInBvdyIsICA1MDAgfQp9OwoKaW50IG1haW4oKQp7CgljaGFyIGVudHJlZVtdID0gInBvdz01MDAwIjsKCQoJQ29uc2lnbmUgY29uc2lnbmU7CglpZiAoIHNzY2FuZiggZW50cmVlLCAiJTdbXiA9XSUqWyA9XSVsZCIsIGNvbnNpZ25lLm5vbSwgJmNvbnNpZ25lLnZhbGV1ciApID09IDIgKQoJewoJCWJvb2wgY29uc2lnbmVJbmNvbm51ZSA9IHRydWU7CgkJZm9yICggaW50IGkgPSAwOyBpIDwgc2l6ZW9mKGNvbnNpZ25lcykgLyBzaXplb2YoQ29uc2lnbmUpOyBpKysgKQoJCXsKCQkJaWYgKCAhc3RyY21wKCBjb25zaWduZXNbaV0ubm9tLCBjb25zaWduZS5ub20gKSApCgkJCXsKCQkJCWNvbnNpZ25lSW5jb25udWUgPSBmYWxzZTsKCQkJCWNvbnNpZ25lc1tpXS52YWxldXIgPSBjb25zaWduZS52YWxldXI7CgkJCQlwcmludGYoICJDb25zaWduZSBcIiVzXCIgbW9kaWZpw6llIMOgICVsZC5cbiIsIGNvbnNpZ25lLm5vbSwgY29uc2lnbmUudmFsZXVyICk7CgkJCQlicmVhazsKCQkJfQoJCX0KCQlpZiAoIGNvbnNpZ25lSW5jb25udWUgKQoJCXsKCQkJcHJpbnRmKCJDb25zaWduZSBcIiVzXCIgaW5jb25udWUuXG4iLCBjb25zaWduZS5ub20gKTsKCQl9Cgl9CgllbHNlCgl7CgkJcHJpbnRmKCJDb21tYW5kZSBcIiVzXCIgaW5jb25udWUuXG4iLCBlbnRyZWUgKTsKCX0KCglyZXR1cm4gMDsKfQ==