J'essaie de comparer deux tableaux char et d'imprimer sur le terminal si la chaîne a été trouvée ou non. Lorsque j'exécute mon code, la sortie imprimée renvoie une charge de jibber qui n'est pas liée à ce que j'ai spécifié. Je pense que plus de mémoire que j'ai spécifié est en cours d'impression mais je ne sais pas pourquoi. Strstr renvoie un pointeur vers l'index de début de la chaîne trouvée (si trouvée), null si ce n'est pas le cas. Je devine c'est ce qui cause l'erreur - mais j'ai pensé en vérifiant seulement si le résultat était nul plutôt qu'imprimer le résultat le contournerait.Utilisation de strstr dans C MBED, impression résultat
Mon code:
include "mbed.h"
include "string.h"
char input[] = "Hello mbed";
char value[] = "llo";
int main() {
char * output;
output = strstr(input, value);
bool found = false;
if (output != NULL) {
found = true;
}
printf(found ? "true" : "false");
}
Ma sortie:.!
trueloHello mbed½mà $ ö [F FðMøDà (ÛÝéBÝ @ \ a0 ZFGñ @@ Ñ ZFGmºñªñ ÝÜàøZFGm¸ñ¨ñôÜ [F F «æ- + -éðAF% FFÔà9F ° GmdùÕ (F½èð-EDAF% FFÈÕ0'à « ÕàAF8F ° GmdùÕ (F½èðJh * D hS [email protected]
pGðμF ° F2¡ü ÷ eo (¿% 0OÐWø% H ± m-ùÓGà-BHI ` ° ð½-? Ò x: (Ð! FhFþ ÷ ýhFþ ÷ mý (3ÐhFþ ÷ mý (hF Ðþ ÷ Uy # àjF¡ Fü ÷ Åøàþ ÷? ݳð¿ $ пð¿Dôtð¿DôdFhFþ ÷ UýF0h "Fh0FG (¿Gø% è ° ð½Oð 0 ° ð½ð¿ $ ÛÑð¿ $$ Oc: ttl:% p (¼¿ pGJëPø .......
On dirait un bogue dans l'implémentation du compilateur ... vous pourriez peut-être inspecter le code assembleur généré pour voir ce qui se passe. Ou contactez votre fournisseur. –
lors de la compilation, activez toujours tous les avertissements. puis corrige les messages résultants du compilateur – user3629249
Je ne vois rien de mal avec le code que vous avez posté qui causerait cette erreur. Est-ce que le fichier d'en-tête "mbed.h" fait n'importe quoi? Essayez de vous débarrasser de la ligne 'include" mbed.h "'. –