为什么"strcat"功能不起作用?

Gol*_*irl 3 c string strcat

我正在尝试使用结构连接数组strcat.我的代码如下:

int main(){

//Implementation of Search table Tree

struct searchTable
{
    char first[10];
    int first_id;
    char second[10];
    int second_id;
    char third[10];
    int third_id;
    char fourth[10];
    int fourth_id;
    char fifth[10];
    int fifth_id;

}input[5]= {
        {"ABC", 101},
        {"CAB",102},
        {"ACB",103},
        {"AAC",104},
        {"CCB",105}
};
char join[100]={0};

strcat(join, input[0].first);
strcat(join, input[1].second);
strcat(join, input[2].third);
strcat(join, input[3].fourth);
strcat(join, input[4].fifth);

printf("%s", join);
Run Code Online (Sandbox Code Playgroud)

这里输出而不是给我

ABCCABACBAACCCB

给了我

ABC

有人能告诉我我做错了什么吗?

Vla*_*cow 6

改为写

strcat(join, input[0].first);
strcat(join, input[1].first);
strcat(join, input[2].first);
strcat(join, input[3].first);
strcat(join, input[4].first);
Run Code Online (Sandbox Code Playgroud)

使用这些初始化程序

//...
}input[5]= {
        {"ABC", 101},
        {"CAB",102},
        {"ACB",103},
        {"AAC",104},
        {"CCB",105}
};
Run Code Online (Sandbox Code Playgroud)

你显式初始化即阵列中的每个元素的只有前两个数据成员firstfirst_id.所有其他数据成员均为零初始化.

如果你想准确使用你的陈述 strcat

strcat(join, input[0].first);
strcat(join, input[1].second);
strcat(join, input[2].third);
strcat(join, input[3].fourth);
strcat(join, input[4].fifth);
Run Code Online (Sandbox Code Playgroud)

然后按以下方式初始化数组

struct searchTable
{
    char first[10];
    int first_id;
    char second[10];
    int second_id;
    char third[10];
    int third_id;
    char fourth[10];
    int fourth_id;
    char fifth[10];
    int fifth_id;

}input[5]= {
        { .first = "ABC", .first_id = 101 },
        { .second = "CAB", .second_id = 102 },
        { .third = "ACB", .third_id = 103 },
        { .fourth = "AAC", .fourth_id = 104 },
        { .fifth = "CCB", .fifth_id = 105 }
};
Run Code Online (Sandbox Code Playgroud)

在这种情况下,输出看起来像

ABCCABACBAACCCB
Run Code Online (Sandbox Code Playgroud)