gpt4 book ai didi

c - 如何将 2 个数组合并为一个数组

转载 作者:行者123 更新时间:2023-11-30 21:37:44 26 4
gpt4 key购买 nike

作为一名编程新手,我有一个问题要问你们,

出于没有任何特定目的,我想知道我是否从用户那里获取了 2 个数组,然后将它们放在一个单独的数组中,如何避免在后一个数组中获取 2 个相同的字符?

为了澄清,假设用户输入“sea”和“blue”作为 2 个单独的数组,

如何将它们放在一个数组中,例如“s,e,a,b,l,u”而不是 C 编程语言中的“s,e,a,b,l,u,e”?

最佳答案

我希望您不要用逗号分隔目标数组中的字符。

这是一个例子

#include <stdio.h>
#include <string.h>

int main( void )
{
char s1[] = "sea";
char s2[] = "blue";
char s3[sizeof( s1 ) + sizeof( s2 ) - 1];
char *p, *q;

strcpy( s3, s1 );
p = s3 + strlen( s1 );

for ( q = s2; *q; ++q )
{
if ( strchr( s1, *q ) == NULL )
{
*p++ = *q;
}
}

*p = '\0';

puts( s1 );
puts( s2 );
puts( s3 );

return 0;
}

输出为

sea
blue
seablu

或者,如果您希望目标数组可以具有两个(或更多)源数组的唯一字符,则代码可以如下所示

#include <stdio.h>
#include <string.h>

int main()
{
char s1[] = "sea";
char s2[] = "blue";
const char * a[] = { s1, s2 };
char s3[sizeof( s1 ) + sizeof( s2 ) - 1];
size_t i;
char *p, *q;

p = s3;

for ( i = 0; i < sizeof( a ) / sizeof( *a ); i++ )
{
const char *q = a[i];
for ( ; *q; ++q )
{
char *t = s3;

while ( t != p && *t != *q ) ++t;
if ( t == p )
{
*p++ = *q;
}
}
}

*p = '\0';

puts( s1 );
puts( s2 );
puts( s3 );

return 0;
}

输出将与上面相同。

考虑到如果您将使用零初始化目标数组,例如

char s3[sizeof( s1 ) + sizeof( s2 ) - 1] = { '\0' };

然后代替循环

while ( t != p && *t != *q ) ++t;

您可以像第一个演示程序一样使用函数strchr

关于c - 如何将 2 个数组合并为一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27358776/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com