在C MBED中使用strstr,打印结果

时间:2016-04-23 14:28:03

标签: c++ c strstr mbed

我正在尝试比较两个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@HpGðμ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ø.......

3 个答案:

答案 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()永远不会返回