这是完成单词搜索作业的一部分。我必须使用命令行参数来搜索预定的二维数组。我只需要搜索水平(从左到右)、对角(从左上到右下)和垂直(从上到下)。 一旦我更好地理解了指针问题,我将编写 Diag 和 Vert。
我明白了
warning: comparison between pointer and integer
这发生在以下 if 语句中
if (argv[count] == g[i][j]){
为什么我会收到警告,以及我对指针的理解中缺少什么,导致我无法执行此操作。
我尝试了 *g 和 (int star)g 的不同变体,结果比警告更糟糕。
我需要有无警告的代码才能上交。
感谢您帮助新人。
#include <stdio.h>
#define ROW 3
#define COL 4
#define TRUE 1
#define FALSE 0
int checkHoriz(char *data, char *data2);
main(int argc, char *argv[]){
int count, i, j, rowValue, colValue;
char g[ROW][COL] = {{'a','b','c','d'},
{'d','c','b','a'},
{'x','y','z','d'}};
count=1;
if(argc>1){
for(i=0; i<ROW; i++){
for(j=0; j<COL; j++){
if (argv[count] == g[i][j]){
rowValue = i;
colValue = j;
if(checkHoriz(argv[count],g[i][j]) ==TRUE){
printf("%s appears horizontally starting @ g[%d]{%d]. \n", argv[count], i,j);
}
}
}
}
}else{
printf("No arguments were entered.\n");
}
}
int checkHoriz(char *data, char *data2){
int i = 0;
while (data == data2 && data!=' ' && data2 != '\0'){
data++;
data2++;
}
if(data2 == '\0'){
return 1;
}else{
return 0;
}
}
最佳答案
argv
是一个字符串数组;一个char**
和g
是 char
的数组数组;一个char[][]
.
因此,argv[count]
类型为char*
(字符串)和 g[i][j]
类型为char
。您正在将指针与单个 char
进行比较,整数类型。这就是警告告诉您的内容。
如果您想搜索char
的g
argv[count]
里面,那么您将需要取消引用 argv[count]
更进一步,与个人合作char
s 的范围为 argv[count][0]
至argv[count][strlen(argv[count]) - 1]
.
关于字符数组和二维数组指针问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9552176/