如何解决'strcmp' 的传递参数 1 使指针来自整数而不进行强制转换 C
我正在尝试将二维数组与字符进行比较,但它不断向我发送此错误并指向数组。
if ((strcmp(matrixarray[j+k][i],"X"))==0 || (strcmp(matrixarray[j+k][i],currentword))==0)
最小可重现示例:
char wordsarray[8][7] = {"kalnas","namas","vanduo","dama","rasa","ola","mia","jis"};
char matrixarray[6][7] = {"XOXXOX","OOOOOO","XOXXOX","XOOOOX","XOXOXX","XOOOXX"};
char currentword = wordsarray[0][0];
int maxlen = 7 - sizeof(currentword);
for (int i = 0; i < n; i++){
for(int j = 0; j <= maxlen; j++){
for (int k = 0; k < n; k++){
if ((strcmp(matrixarray[j+k][i],currentword))==0)
matrixarray[j+k][i] = currentword;
else
matrixarray[0][0] = 'X';
}
解决方法
给定定义 char matrixarray[6][7]
,调用 strcmp(matrixarray[j+k][i],"X")
将一个字符传递给 strcmp()
,但它需要一个指针。
使用 strcmp(&matrixarray[j+k][i],"X")
是最简单的更改。它将修复编译问题;它在算法上可能正确也可能不正确。
确实,这可能是不正确的。除非查看 matrixarray[j+k]
中空字节之前的最后一个字符,否则比较不会成功。您似乎更有可能比较字符,而不是字符串,因此:
matrixarray[j+k][i] == 'X'
它可能更接近正确。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。