簡體   English   中英

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

[英]Using strstr in C MBED, printing result

我正在嘗試比較兩個char數組並打印到終端,無論是否找到該字符串。 當我運行我的代碼時,輸​​出的輸出將返回與我指定的無關的動臂負載。 我認為正在打印的內存比我指定的要多,但是我不確定為什么。

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½èð-éAFAF'FF%FF °GmdùÕ(F½èðJh*ÐhS ?pHh@H pGðµ?F°F2¡ü÷Èø(¿%0OÐWø%H±m?-ùÓGà-IhB`°ð½?-?Òx:(Ð! mý(3ÐhFþ÷mý(hFÐþ÷Uý#àjF¡Fü÷Åøàþ÷?ý³ð?¿$пð?¿Dôtð?¿ $$Õç:ttl:%p(¼¿pGJëPø.......

這是經過更正的代碼,可以干凈地編譯並按需要工作

注意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" ));
}

編譯器及其在const字符串中如何工作存在問題。 在字符串中添加NULL字符以查看是否停止打印...

printf(found ? "true\0" : "false\0");

printf()可能是您的編譯器/庫/ IDE上的宏。 包括頭文件,確保其按預期工作。 此外,在嵌入式系統上,main()永遠不要返回

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM