Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用指针从char中删除空格_C - Fatal编程技术网

使用指针从char中删除空格

使用指针从char中删除空格,c,C,我试图用指针从字符中删除空空格 char * byte="a b c d" char * CopiedByte; for (;*byte;++byte) { if(*byte!=' ') *CopiedByte=*byte; } printf("%s",CopiedByte); 但是我在输出中没有得到任何东西您没有将内存分配给CopiedByte,一旦您将字符从byte复制到CopiedByte,您需要增加CopiedByte以指向下一个位置。 重要提

我试图用指针从字符中删除空空格

 char * byte="a b c d"
 char * CopiedByte;
 for (;*byte;++byte)
   {
    if(*byte!=' ')
      *CopiedByte=*byte;


  }
 printf("%s",CopiedByte);

但是我在输出中没有得到任何东西

您没有将内存分配给
CopiedByte
,一旦您将字符从
byte
复制到
CopiedByte
,您需要增加
CopiedByte
以指向下一个位置。 重要提示:复制所有数据后,将
NULL
终止符放入

需要释放使用
malloc
(动态)分配的内存,否则将出现
内存泄漏

 char * byte="a b c d";
 char * CopiedByte = malloc(strlen(byte) +1);
 int i=0;
 for (;*byte;++byte)
   {
    if(*byte!=' ')
    {
      CopiedByte[i]=*byte;
      i++;
    }
  }
  CopiedByte[i] = '\0';

 /* do your work*/

  free(CopiedByte);

您尚未将内存分配给
CopiedByte
,将字符从
byte
复制到
CopiedByte
后,需要增加
CopiedByte
以指向下一个位置。 重要提示:复制所有数据后,将
NULL
终止符放入

需要释放使用
malloc
(动态)分配的内存,否则将出现
内存泄漏

 char * byte="a b c d";
 char * CopiedByte = malloc(strlen(byte) +1);
 int i=0;
 for (;*byte;++byte)
   {
    if(*byte!=' ')
    {
      CopiedByte[i]=*byte;
      i++;
    }
  }
  CopiedByte[i] = '\0';

 /* do your work*/

  free(CopiedByte);


您有一个指针
CopiedByte
,但它指向哪里?!另外,不要忘记中的
char
字符串实际上被称为以null结尾的字节字符串。空终止符对于所有处理字符串的函数都非常重要。如果您忘记了它,那么字符串函数将越界查找它。请显示一个。那么哪种方法最简单?使用字符数组代替指针?最后,您永远不会更改
CopiedByte
指向的位置,因此您将反复覆盖同一位置。您有一个指针
CopiedByte
,但它指向哪里?!另外,不要忘记中的
char
字符串实际上被称为以null结尾的字节字符串。空终止符对于所有处理字符串的函数都非常重要。如果您忘记了它,那么字符串函数将越界查找它。请显示一个。那么哪种方法最简单?使用字符数组代替指针?最后,您永远不会更改
CopiedByte
指向的位置,因此您会一遍又一遍地覆盖同一位置。但我在输出中看不到任何内容。@现在您可以看到了。现在也看不到了。……在我的情况下,数组是否更容易使用?还是没关系?@Dim数组或指针,这是个人喜好的问题。但我也看不到输出中的任何内容。@Dim您现在可以看到了。现在也看不到了……在我的情况下,数组是否更容易使用?还是没关系?@Dim数组或指针,这是个人偏好的问题。