2014-09-10 76 views
1

我有這個問題: 我有一個存儲不同字符的矩陣。現在我必須將這些字符與另一個字符進行比較,但是在編譯時,它說strcmp recives char *並且我有char **。那麼,我該如何施展它? 這是我的代碼:如何從char **轉換爲C中的char *?

對於矩陣:

for (i = 0; i < x; i++){ 
     for (j = 0; j < y; j++){ 
      if (!fscanf(fol, "%c", &mat[i][j])){ 
       break;} 
      //printf("%c", mat[i][j]); 
      } 
     } 

我有問題的部分:

for (x = 0; x < largo; x++){ 
     for (y = 0; y < ancho; y++){ 
      char *charcha; 
      strcpy (charcha, mat[x][y]); 

      //char *charcha = "%c", mat[x][y]; 
      int algo = strcmp(charcha, "0"); 
      if (algo == 0){ 
       printf (" "); 
       } 
      else{ 
      printf("%c", mat[x][y]);} 
      } 
      } 

    printf ("\n"); 

我用strcpy的嘗試,但它也失敗了:C

謝謝

+2

作爲-是charcha是傳遞給strcpy的未初始化指針。 – kenny 2014-09-11 00:00:56

+1

'if(algo == 0){' - >'if(mat [x] [y] =='0'){ – BLUEPIXY 2014-09-11 00:08:03

回答

3

如果要比較字符串,使用方法:

for (x = 0; x < largo; x++) 
{ 
    if (strcmp(mat[x], "0") == 0) 
    { 
     // Do whatever. 
    } 
    else 
    { 
     // Do whatever. 
    } 
} 

如果你想比較字符,請使用:

for (x = 0; x < largo; x++) 
{ 
    for (y = 0; y < ancho; y++) 
    { 
     if (mat[x][y] == '0') 
     { 
     // Do whatever. 
     } 
     else 
     { 
     // Do whatever. 
     } 
    } 
} 
2

從char **轉到char *使用*

例如:

char ** twoLevel = .. 
char * oneLevel = *twoLevel;