如何在C编程中组合两个字符串数组

如何在C编程中组合两个字符串数组,c,arrays,string,2d,C,Arrays,String,2d,我有这个项目。我有分数数组,match1,match2,还有球员的名字和他们国家的缩写。然后我有这些缩写和国家的长名称 我可以把球员的名字和国家的缩写放在一起,也可以把国家的缩写和国家的长名放在一起 但是我不知道如何把国家队的名字和球员的名字组合在一起 因此,我创建了一个数组(char name_和_country[PLAYERS][LENGTH_name]),我希望在这个数组中有名称和国家;所以如果我打印出来说: char name_和_country[球员][长度名称]={“大卫·贝克汉姆英

我有这个项目。我有分数数组,match1,match2,还有球员的名字和他们国家的缩写。然后我有这些缩写和国家的长名称

我可以把球员的名字和国家的缩写放在一起,也可以把国家的缩写和国家的长名放在一起

但是我不知道如何把国家队的名字和球员的名字组合在一起

因此,我创建了一个数组(char name_和_country[PLAYERS][LENGTH_name]),我希望在这个数组中有名称和国家;所以如果我打印出来说:

char name_和_country[球员][长度名称]={“大卫·贝克汉姆英格兰队”、“韦恩·鲁尼英格兰队”…等等

有人能帮我吗? 提前谢谢你

#include <stdlib.h>
#include <stdio.h>
#include <stddef.h>
#define PLAYERS 5
#define NUM_COUNTRIES 3
#define LENGTH_NAME 40
#define LENGTH_CODE 4
#define LENGTH_COUNTRY 20


int main (void)

{   int match1[PLAYERS] = { 0,1,3,2,4};
    int match2[PLAYERS] = { 0,4,0,0,1};
    int goals[PLAYERS] ;

    char name[PLAYERS][LENGTH_NAME] ={"David Beckham","Wayne Rooney","Pirlo", "Del Piero","Lionel Messi"};
    char country_abbreviations[PLAYERS][LENGTH_CODE] = {"ENG","ENG","ITA","ITA","ARG"};
    char country_code[NUM_COUNTRIES][LENGTH_CODE] = {"ARG","ENG","ITA"};
    char country_name[NUM_COUNTRIES][LENGTH_COUNTRY] = {"Argentina", "England","Italy"};
    char name_and_country_code[PLAYERS][LENGTH_NAME];
    char country_code_and_country_name[NUM_COUNTRIES][LENGTH_COUNTRY];
    char name_and_country[PLAYERS][LENGTH_NAME];
    int i, first =1, second= 2;

 for(i=0; i < PLAYERS; i++)
    {
        strcpy (name_and_country_code[i], name[i]);
        strcat (name_and_country_code[i], "  " );
        strcat (name_and_country_code[i], country_abbreviations[i]);
        goals[i]= match1[i] + match2[i];
        printf("Player %s----- score %d:\n", name_and_country_code[i], goals[i]);
    }
#包括
#包括
#包括
#定义玩家5
#定义NUM_国家3
#定义长度\u名称40
#定义长度_代码4
#定义国家20的长度
内部主(空)
{int match1[玩家]={0,1,3,2,4};
int match2[玩家]={0,4,0,0,1};
智力目标[球员];
char name[球员][长度名称]={“大卫·贝克汉姆”、“韦恩·鲁尼”、“皮尔洛”、“德尔·皮耶罗”、“莱昂内尔·梅西”};
char country_缩写[PLAYERS][LENGTH_CODE]={“ENG”、“ENG”、“ITA”、“ITA”、“ARG”};
char country_code[NUM_COUNTRIES][LENGTH_code]={“ARG”、“ENG”、“ITA”};
char country_name[NUM_COUNTRIES][LENGTH_country]={“阿根廷”、“英格兰”、“意大利”};
字符名称和国家代码[玩家][长度名称];
char country_code_和_country_name[NUM_COUNTRIES][LENGTH_country];
字符名称和国家[玩家][长度名称];
int i,第一个=1,第二个=2;
对于(i=0;i
使用此代码。我已将我的代码添加到您的代码中,结果如下。我运行了它,它工作正常

#include <stdlib.h>
#include <stdio.h>
#include <stddef.h>
#include<string.h>
#define PLAYERS 5

#define NUM_COUNTRIES 3
#define LENGTH_NAME 40
#define LENGTH_CODE 4
#define LENGTH_COUNTRY 20


int main (void)

{   int match1[PLAYERS] = { 0,1,3,2,4};
        int match2[PLAYERS] = { 0,4,0,0,1};
        int goals[PLAYERS] ;

        char name[PLAYERS][LENGTH_NAME] ={"David Beckham","Wayne Rooney","Pirlo", "Del Piero","Lionel Messi"};
        char country_abbreviations[PLAYERS][LENGTH_CODE] = {"ENG","ENG","ITA","ITA","ARG"};
        char country_code[NUM_COUNTRIES][LENGTH_CODE] = {"ARG","ENG","ITA"};
        char country_name[NUM_COUNTRIES][LENGTH_COUNTRY] = {"Argentina", "England","Italy"};
        char name_and_country_code[PLAYERS][LENGTH_NAME];
        char country_code_and_country_name[NUM_COUNTRIES][LENGTH_COUNTRY];
        char name_and_country[PLAYERS][LENGTH_NAME];
        int i, first =1, second= 2;

        for(i=0; i < PLAYERS; i++)
        {
                strcpy (name_and_country_code[i], name[i]);
                strcat (name_and_country_code[i], "  " );
                strcat (name_and_country_code[i], country_abbreviations[i]);
                goals[i]= match1[i] + match2[i];
                printf("Player %s----- score %d:\n", name_and_country_code[i], goals[i]);
        }
        for(i=0; i < PLAYERS; i++)
        {
                strcpy (name_and_country[i], name[i]);
                strcat (name_and_country[i], "  " );
                char country[LENGTH_COUNTRY];
                strcpy(country,"DEFAULT COUNTRY"); // Used when player has a invalid country code
                int j;
                for(j=0;j<NUM_COUNTRIES;j++)
                {
                        if(strcmp(country_abbreviations[i],country_code[j])==0)
                                strcpy(country,country_name[j]);
                }
                strcat(name_and_country[i],country);
                printf("%s\n",name_and_country[i]);
        }
}
#包括
#包括
#包括
#包括
#定义玩家5
#定义NUM_国家3
#定义长度\u名称40
#定义长度_代码4
#定义国家20的长度
内部主(空)
{int match1[玩家]={0,1,3,2,4};
int match2[玩家]={0,4,0,0,1};
智力目标[球员];
char name[球员][长度名称]={“大卫·贝克汉姆”、“韦恩·鲁尼”、“皮尔洛”、“德尔·皮耶罗”、“莱昂内尔·梅西”};
char country_缩写[PLAYERS][LENGTH_CODE]={“ENG”、“ENG”、“ITA”、“ITA”、“ARG”};
char country_code[NUM_COUNTRIES][LENGTH_code]={“ARG”、“ENG”、“ITA”};
char country_name[NUM_COUNTRIES][LENGTH_country]={“阿根廷”、“英格兰”、“意大利”};
字符名称和国家代码[玩家][长度名称];
char country_code_和_country_name[NUM_COUNTRIES][LENGTH_country];
字符名称和国家[玩家][长度名称];
int i,第一个=1,第二个=2;
对于(i=0;i对于(j=0;jSo,你期望得到什么?你实际得到了什么?我期望得到这样的结果:
char name_和_country[PLAYERS][LENGTH_name]={“大卫·贝克汉姆英格兰”、“韦恩·鲁尼英格兰”…等等
我不知道怎么做。我想它需要我们一个函数strcnpy和stchr@userXXX那么,你已经有了关于strcat()的
应该做这项工作。你有什么错误吗?@H2CO3,没有,我没有任何错误,因为在这些声明中,我把国家缩写和球员姓名放在一起。我想把国家全名和球员姓名放在一起。这个“默认国家”是什么意思我把这个放在我的程序里,但我仍然没有把它们弄好。你得到了什么输出?在这里发布我的意思是数组名和国家的内容,也发布数组名和国家代码的内容(你为(i=0;i
--------球员是大卫·贝克汉姆。-------球员是韦恩·鲁尼。-------球员是皮尔洛。-------球员是德尔·皮耶罗默认的国家队。-------球员是莱昂内尔·梅西。
使用strcmp时有一个小错误。现在我已经更正了它并添加了上面的完整代码。使用它,它在我的系统上运行良好。希望它有帮助!