这是我的代码,但它无效;
ocrResult = ocrResult.ToLower();
if (ocrResult.Contains("edg") || ocrResult.Contains("gna"))
{
//no edge or no signal
}
else
{
//Not no edge or no signal
}
答案 0 :(得分:2)
问题是您修改了循环中的ans
指针,因此当您返回ans
时,它不再指向字符串的开头,而是指向应该终止字符串的位置
使用初始化为ans
的临时变量,并返回未修改的临时变量。
还应该注意的是,你有内存泄漏,为result
分配了内存,但你从来没有free
。
答案 1 :(得分:1)
您的问题在于将数字转换为文本
尝试添加' 0'的值和' A'正如
那样 if(result[j]>=10 && result[j]<=24) {
printf("%c",(result[j]+'A'));
*ans++=(result[j]+'A');
} else {
printf("%c",(result[j]+'0'));
*ans++=(result[j]+'0');
}
并确保在返回字符串之前将其终止,如
*ans++ = 0;
以及 - 声明
return ans;
将返回字符串的结尾而不是开头 - 所以你必须修复它,并且因为修复你的内存泄漏....