字符数组和2D数组指针问题

时间:2012-03-04 03:59:07

标签: c pointers command-line-arguments

这是完成单词搜索的作业的一部分。我必须使用命令行参数来搜索预定的2D数组。我需要只搜索水平(从左到右),诊断(从左上到右下)和垂直(从上到下)。 一旦我更好地理解指针问题,我就会写出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;
    }
}

1 个答案:

答案 0 :(得分:2)

argv是一个字符串数组; char**gchar数组的数组; char[][]

因此,argv[count]的类型为char*(字符串),g[i][j]的类型为char。您正在将指针与单个char(整数类型)进行比较。这就是警告告诉你的。

如果您要在char内搜索g的{​​{1}},那么您需要进一步取消引用argv[count]一级,并且工作个人argv[count]的范围为charargv[count][0]