我正试图将一个数组一次又一次地读入另一个更大的数组/字符串。我做错了什么?我收到错误消息Thread1: signal SIGABRT??

#include <stdio.h>
void make_nyckel(int size_krypto, char *nyckel);
int main()
{
    int size_krypto = 15;
    char nyckel[15];
    make_nyckel(size_krypto, nyckel);
    return 0;
}


void make_nyckel(int size_krypto, char *nyckel)
{
    char key[10] = { 'M', 'E', 'K', 'A', 'T', 'R', 'O', 'N', 'I', 'K' };
    char i, j;
    for (j = 0; j<size_krypto; j++)
    {
        for (i = 0; i<9; i++)
        {
            *nyckel = key[i];
            nyckel += 1;
        }
    }
}

最佳答案

您不需要第一个for loop,只需使用模运算即可:

#include <stdio.h>
void make_nyckel(int size_krypto, char *nyckel);
int main()
{
int size_krypto = 15;
char nyckel[16];
make_nyckel(size_krypto, nyckel);
printf("%s",nyckel);
return 0;
}


void make_nyckel(int size_krypto, char *nyckel)
{
char key[11] = { 'M', 'E', 'K', 'A', 'T', 'R', 'O', 'N', 'I', 'K' };
int i, j=0;
//   for (j = 0; j<2; j++)
{
    for (i = 0; i<size_krypto; i++)
    {
        nyckel[j++] = key[i%10];


       // nyckel += 1;
    }
}
}

10-07 15:20