使用指针从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数组或指针,这是个人偏好的问题。