我想知道在某些情况下,与使用 strcmp 相比,通过直接比较字符来比较字符串是否会减少处理器密集型。
对于一些背景信息,我在一个处理能力不强的嵌入式系统中使用 C 进行编码。它必须读取传入的字符串并根据传入的字符串执行某些任务。
假设传入的字符串是"BANANASingorethispartAPPLESignorethisalsoORANGES"
. 我想验证BANANAS
、APPLES
和ORANGES
是否存在于它们的确切位置。我的代码会这样做:
input = "BANANASingorethispartAPPLESignorethisalsoORANGES";
char compare[100]; //array to hold input to be compared
strncopy(compare,input,7); //copy "BANANAS" to compare
compare[7] = "\0"; //terminate "BANANAS"
if (strcmp(compare, "BANANAS") == 0){
strncopy(compare,input[21],6); //copy "APPLES" to compare
compare[6] = "\0"; //terminate "APPLES"
if(strcmp(compare,"APPLES")==0){
//repeat for "ORANGES"
}
}
或者,我可以直接比较字符:
input = "BANANASingorethispartAPPLESignorethisalsoORANGES";
if(input[0]=='B' && input[1]=='A' && input[2]=='N' && input[3]=='A' && input[4]=='N' && input[5]=='A' && input[6]=='S'){
if(input[21]=='A' && input[22]=="P" <snipped> ){
if(input[30]=='O' <snipped> ){
//input string matches my condition!
}
}
}
使用 strncopy+strcmp 更优雅,但是出于性能原因,直接比较字符会更快吗?