【问题标题】:How do I cast from char** to char* in C?如何在 C 中从 char** 转换为 char*?
【发布时间】:2014-11-04 18:46:11
【问题描述】:

我有这个问题: 我有一个存储不同字符的矩阵。现在我必须将这些字符与另一个字符进行比较,但是在编译时,它说 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

谢谢

【问题讨论】:

  • 按原样 charcha 是传递给 strcpy 的未初始化指针。
  • if (algo == 0){ --> if (mat[x][y] == '0'){

标签: c pointers casting char strcmp


【解决方案1】:

如果要比较字符串,请使用:

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;
    

    【讨论】:

      猜你喜欢
      • 2011-01-05
      • 1970-01-01
      • 2014-10-22
      • 2019-11-11
      • 2020-08-04
      • 1970-01-01
      • 2015-12-22
      • 2021-11-30
      • 2015-04-02
      相关资源
      最近更新 更多