如何在C中从char **转换为char *?

时间:2014-09-10 23:56:34

标签: c pointers casting char strcmp

我有这个问题: 我有一个矩阵,其中存储不同的字符。现在我必须将这些字符与另一个字符进行比较,但是在编译时,它表示strcmp会重现char *而且我有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 个答案:

答案 0 :(得分: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.
      }
   }
}

答案 1 :(得分:2)

从char **转到char *使用*

示例:

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