我正在尝试比较两个char数组并打印到终端是否找到该字符串。 当我运行我的代码时,打印的输出返回一个与我指定的内容无关的jibber加载。我认为比我指定的内存更多,但是我不确定原因。
Strstr返回指向找到的字符串的起始索引(如果找到)的指针,否则返回null。我猜这是造成错误的原因 - 但我想只检查结果是否为null而不是打印结果会绕过这个。
我的代码:
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");
}
我的输出:
trueloHellombed½mà$Õ[F!FðMøDà(ÛÝéBÝ@ \à0ZFGñ@@Ñ。ZFGmºñªñ
ÝÜàøZFGm¸ñ¨ñôÜ[F!F«æ-+-éðAF%FFÔà9F°GmdùÕ(F½èð-éðAF%FFÈÕ0'à'ÕàAF8F°GmdùÕ(F½èðJh*Ð)
的hS pHh@H
pGðμF°F2¡ü÷EO(¿%0OÐWø%H±M-ùÓGà-木材
`°ð½-?Òx:(Ð!FhFþ÷ýhFþ÷mý(3ÐhFþ÷mý(hFÐþ÷Uý#àjF¡Fü÷Åøàþ÷?ð³ð¿$пð¿Dôtð¿DôdFhFþ÷UýF0h“Fh0FG(¿Gø %è°ð½Oðÿ0°ð½ð¿$ÛÑð¿$$Õç:ttl:%p(¼¿pgGëPø.......
答案 0 :(得分:1)
这是一个完整的代码,可以干净地编译,并按照需要工作
请注意printf()
参数的设置方式
请注意已更正的#include
语句列表
//include "mbed.h"
#include <stdio.h> // printf()
#include <string.h> // strstr()
#include <stdbool.h> // bool, true, false
char input[] = "Hello mbed";
char value[] = "llo";
int main( void )
{
char * output = strstr(input, value);
bool found = false;
if (output)
{
found = true;
}
printf( "%s\n", ((found)? "true" : "false" ));
}
答案 1 :(得分:0)
编译器存在问题以及它如何与const字符串一起使用。将NULL字符添加到字符串中以查看它是否停止打印...
the_player_1 = player1(50, 100)
the_player_2 = player2(200, 50, the_player_1)
答案 2 :(得分:0)
printf()可能是编译器/库/ IDE上的一个宏。包括头文件,确保它按预期工作。另外,在嵌入式中,main()永远不会返回