C - 复制包含' \ 0'的字符数组到另一个char数组,消除' \ 0'

时间:2017-04-28 12:10:24

标签: c null char-pointer

是否有任何C库函数将char数组(包含一些'\0'个字符)复制到另一个char数组,而不复制'\0'
例如,"he\0ll\0o"应复制为"hello"

3 个答案:

答案 0 :(得分:3)

只要您知道char数组有多长时间:

void Copy(const char *input, size_t input_length, char *output)
{
  while(input_length--)
  { 
     if(input!='\0')
        *output++ = input;
     input++;
   }
   *output = '\0'; /* optional null terminator if this is really a string */
}

void test()
{
     char output[100];
     char input = "He\0ll\0o";
     Copy(input, sizeof(input), output);
 }

答案 1 :(得分:0)

不,没有库功能可以做到这一点。你必须自己写。

但有一个问题:你怎么知道何时停止忽略\0?您的字符串("he\0ll\0o")有三个零字节。你怎么知道在第三个停止?

答案 2 :(得分:0)

字符串中的

'\ 0'是一种查找字符串结尾的方法(终止字符串的字符)。因此,为字符串操作设计的所有函数都使用'\ 0'来检测字符串的结尾。

现在,如果你想要这样的实现,你需要设计自己的实现 你将面临的问题是:
1)您如何确定哪个'\ 0'用作终止字符?
因此,对于此类实现,您需要明确告知用作终止字符的'\ 0'计数,或者您需要为字符串设置自己的终止字符。
2)对于您的实现的任何其他操作,您不能使用预定义的字符串相关函数 因此,实现您自己的功能来执行这些操作。