在C语言中如何将一个循环字符串读入另一个更大的字符串

在C语言中如何将一个循环字符串读入另一个更大的字符串,c,C,我试图将一个数组反复读入另一个更大的数组/字符串。我做错了什么?我收到错误消息Thread1: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; } voi

我试图将一个数组反复读入另一个更大的数组/字符串。我做错了什么?我收到错误消息
Thread1: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;                        
        }
    }
}
#包括
void make_nyckel(int size_krypto,char*nyckel);
int main()
{
int size_krypto=15;
char-nyckel[15];
make_nyckel(krypto尺寸,nyckel);
返回0;
}
void make_nyckel(int size_krypto,char*nyckel)
{
字符键[10]={'M','E','K','A','T','R','O','N','I','K'};
chari,j;

对于(j=0;j如果要用作字符串,请不要忘记
nyckel
的终止NUL字节

void make_nyckel(int size_krypto, char *nyckel) {
    char key[] = { 'M', 'E', 'K', 'A', 'T', 'R', 'O', 'N', 'I', 'K' };
    size_t keylen = sizeof key; /* subtract 1 if key includes a '\0'
                                ** or use strlen(key) */

    for (size_t k = 0; k < size_krypto; k++) {
        nyckel[k] = key[k % keylen];
    }
}
void make_nyckel(int size_krypto,char*nyckel){
字符键[]={'M','E','K','A','T','R','O','N','I','K'};
size\u t keylen=键的大小;/*如果键包含“\0”,则减去1
**或使用strlen(键)*/
对于(大小k=0;k
对于循环
,您不需要第一个
,只需进行模运算即可:

#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;
    }
}
}
#包括
void make_nyckel(int size_krypto,char*nyckel);
int main()
{
int size_krypto=15;
char-nyckel[16];
make_nyckel(krypto尺寸,nyckel);
printf(“%s”,nyckel);
返回0;
}
void make_nyckel(int size_krypto,char*nyckel)
{
字符键[11]={'M','E','K','A','T','R','O','N','I','K'};
int i,j=0;

//对于(j=0;j
*nyckel=key[i];nyckel+=1;
这是
9*size_krypto
次完成的。在数组中不能为
15
留出90个字符(或任何字符)(如果它是字符串,则为14个)nyckel的大小只有15个字符,你写的是150个字符。你超出了分配给你的空间。你不应该使用C标准库中的strncat函数吗?好的,我理解我的错误代码。我如何才能最好地解决这个问题?我的目标是让nyckel=MEKATRONIKMEKATThank这么感谢你!!我把问题简化了一点。真正的功能是很多又复杂又复杂,但构建方式相同..你让我开心!