C - 将包含 '\0' 的字符数组复制到另一个字符数组,消除 '\0'
C - Copy char array that contains '\0' to another char array, eliminating '\0'
是否有任何 C 库函数可以将 char
数组(包含一些 '[=11=]'
字符)复制到另一个 char
数组,而不复制 '[=11=]'
?
例如,"he[=14=]ll[=14=]o"
应复制为 "hello"
。
不,没有执行此操作的库函数。你必须自己写。
但有一个问题:您如何知道何时停止忽略 [=10=]
?您的字符串 ("he[=11=]ll[=11=]o"
) 有三个零字节。你怎么知道停在第三个?
'\0' in strings 是一种查找字符串结尾(字符串的终止字符)的方法。所以,所有为字符串操作设计的函数都使用'\0'来检测字符串的结尾。
现在,如果你想要这样的实现,你需要自己设计。
你将面临的问题是:
1) 你将如何确定哪个 '\0' 被用作终止符?
所以对于这样的实现,你需要明确地告诉'\0'作为终止字符的计数,或者你需要为字符串设置你自己的终止字符。
2) 对于您实现的任何其他操作,您不能使用预定义的字符串相关函数。
因此,实现您自己的功能来执行这些操作。
只要知道char数组有多长就可以了:
void Copy(const char *input, size_t input_length, char *output)
{
while(input_length--)
{
if(input!='[=10=]')
*output++ = input;
input++;
}
*output = '[=10=]'; /* optional null terminator if this is really a string */
}
void test()
{
char output[100];
char input = "He[=10=]ll[=10=]o";
Copy(input, sizeof(input), output);
}
是否有任何 C 库函数可以将 char
数组(包含一些 '[=11=]'
字符)复制到另一个 char
数组,而不复制 '[=11=]'
?
例如,"he[=14=]ll[=14=]o"
应复制为 "hello"
。
不,没有执行此操作的库函数。你必须自己写。
但有一个问题:您如何知道何时停止忽略 [=10=]
?您的字符串 ("he[=11=]ll[=11=]o"
) 有三个零字节。你怎么知道停在第三个?
'\0' in strings 是一种查找字符串结尾(字符串的终止字符)的方法。所以,所有为字符串操作设计的函数都使用'\0'来检测字符串的结尾。
现在,如果你想要这样的实现,你需要自己设计。
你将面临的问题是:
1) 你将如何确定哪个 '\0' 被用作终止符?
所以对于这样的实现,你需要明确地告诉'\0'作为终止字符的计数,或者你需要为字符串设置你自己的终止字符。
2) 对于您实现的任何其他操作,您不能使用预定义的字符串相关函数。
因此,实现您自己的功能来执行这些操作。
只要知道char数组有多长就可以了:
void Copy(const char *input, size_t input_length, char *output)
{
while(input_length--)
{
if(input!='[=10=]')
*output++ = input;
input++;
}
*output = '[=10=]'; /* optional null terminator if this is really a string */
}
void test()
{
char output[100];
char input = "He[=10=]ll[=10=]o";
Copy(input, sizeof(input), output);
}