我正在尝试对两个 C 风格的字符串执行不区分大小写的 strcmp。
我有一个将 C 风格的字符串转换为小写的函数。
char* ToLowerCase(const char* str)
{
char buffer[strlen(str)];
for (int i=0; i<strlen(str); ++i)
buffer[i] = char(tolower(str[i]));
return buffer;
}
一个字符串来自函数 char* GetMyString(int i),第二个来自 C 风格字符串数组 char* myStrings[5]。
所以假设 GetMyString(0) 和 myString[0] 都返回 "TEXT"
strcmp(ToLowerCase(GetMyString(0)), ToLowerCase(myStrings[0]));
比较诸如“mytextxaogs5atx”“mytextxabs5atx”之类的字符串(添加了一些随机文本......)
同时
strcmp(GetMyString(0), myStrings[0]);
工作得很好,所以我认为与你们中的一些人可能认为的空终止无关。
我的代码有什么问题?我错过了什么?我看过很多关于 tolow 的问题,但没有一个能够帮助我解决问题。