2012-03-04 58 views
0

這是完成單詞搜索的任務的一部分。我必須使用命令行參數來搜索預定的二維數組。我只需要搜索水平(從左到右),Diagnal(從左上到右下)和Vertical(從上到下)。 一旦我更好地理解指針問題,我將編寫Diag和Vert。字符數組和二維數組指針問題

我得到

warning: comparison between pointer and integer 

這發生在以下if語句

if (argv[count] == g[i][j]){ 

爲什麼我得到了警告,那我在我的指針的理解是防止我做這個失蹤。

我試過的* G和(INT星)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; 
    } 
} 
+0

您可以通過編輯您的問題[此鏈接](http://stackoverflow.com/posts/9552176/edit)。 – ruakh 2012-03-04 04:01:43

回答

2

argv是一串字符串; char**g是陣列的char陣列;一個char[][]

因此,argv[count]的類型爲char*(字符串),而g[i][j]的類型爲char。您正在比較指向單個整數類型char的指針。這是警告告訴你的。

如果你要搜索的argv[count]char S的g,那麼你將需要解引用argv[count]再一個級別,並在argv[count][0]的範圍內與個人char的工作,以argv[count][strlen(argv[count]) - 1]

+0

是否argv [count] [0]與* argv [count]相同? – CodeBlue 2012-03-04 04:09:40

+1

@CodeBlue:是的,它們是相同的,因爲運算符'[]'比運算符'*'具有更高的優先級。因此'* argv [count]'和'*(argv [count])'是一樣的,它引用字符串中的第一個'char'。 – AusCBloke 2012-03-04 04:23:32

+0

謝謝AusCBloke。 – Larry 2012-03-04 04:43:46