繁体   English   中英

strcmp 比较相同的字符串但不进入循环

[英]Strcmp comparing to identical strings but not entering loop

char* timecompare(){
    char time[8];
    snprintf(time,8,"%i:%02i",hour(),minute());
    return time;
}

char* timefeed = "8:0";

if (strcmp(timecompare(), timefeed) == 0){
    Serial.println("hello"); 
}

当 timecompare() 和 timefeed 都相等时,我将其作为我的代码,它没有打印你好? 我这是一个指针问题? 我没有将 timecompare() 与 timefeed 进行比较,而是将 timecompare() 与“8:0”进行比较,然后循环工作......这是 timefeed 变量的问题吗?

您正在从timecompare()返回一个堆栈分配的变量time 这是非法的,因为堆栈分配的 memory 仅在声明变量的 function 中有效。

相反,您需要返回一个堆分配的字符串。 你的编译器应该警告你这一点。 你可以这样写:

char* timecompare(){
    char* time = malloc(8);
    snprintf(time,8,"%i:%02i",hour(),minute());
    return time;
}

完成后记得free() memory。

您从 scope 中返回一个局部变量time 当您退出 function timecompare时,返回值不再是有效指针。

此外,从%02i中删除“02”,如果将其与 8:0 进行比较,它应该是%i 使用%02i将产生“00”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM