[英]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.