2017-04-10 78 views
-1
void check_vertical_win(char A[rows][columns]){ 
    int i,j; 
    char *str1=A[i][j]; 
    char *str2=A[i-1][j]; 
    char *str3=A[i-2][j]; 
    char *str4=A[i-3][j]; 
    int elegxos1; 
    int elegxos2; 
    elegxos1=strcmp(str1,str2); 
    elegxos2=strcmp(str3,str4); 
    for(j=0;j<6;j++){ 
     for(i=6;i>=3;i--){ 
      if(elegxos1==0 && elegxos2==0){ 
       printf("\nBill is the winner.\n"); 
      } 
     } 
    } 
} 

我想检查矩阵中的两个字符串是否相等,所以我使用函数strcmp。然而,编译器会给出警告:初始化使得整型指针没有强制转换。 (然后当我运行该程序它说:Windows正在检查我的问题的解决方案)。 我试了很多找到我的错误寻找其他类似的程序,但我找不到。使用strcmp,初始化使得指针从整型转换而不需要转换

+0

哪线是指? –

+3

'char * str1 = A [i] [j];'............仔细一看...... –

+1

'char * str1 = A [i] [j];'这一行(还有以下3行)已经是错误的,你至少会得到一个编译器警告。 –

回答

2
void check_vertical_win(char A[rows][columns]) 

这需要一个字符矩阵。如果你有一个矩阵,其中每个条目是一个字符串,它应该是:

void check_vertical_win(char* A[rows][columns]) 

而且,你使用变量i和j它们被初始化之前(它们包含垃圾):

int i,j; 
char *str1=A[i][j]; 
char *str2=A[i-1][j]; 
char *str3=A[i-2][j]; 
char *str4=A[i-3][j]; 
+0

那么你如何相信我可以比较两个或更多的字符串而不使用strcmp或指针(我是c编程的初学者)? – vasilistheod

+0

你必须使用指针,因为C字符串是指针。您可以编写自己的字符串比较,但除非您的字符串使用标准库无法处理的编码,否则应该坚持strcmp(或strncmp)。 – Novotny

+0

假设我不想知道两个字符串是否相等,但我想检查一个字符串是否等于一个字符串或另一个字符串..我该如何检查?因为strcmp不能这样做.. – vasilistheod