我想连接两个字符串,添加一个新的随机字符,使用strncat()所以基本上我这样做:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define CHARACTER_RANGE 25
#define INITIAL_CHARACTER 65
int main(){
char male[32] = "A", female[32] = "B", new_letter[1], new_name[32];
srand(time(NULL));
strcpy(new_name, male);
strncat(new_name, female, sizeof(new_name) - strlen(new_name) - 1);
new_letter[0]= (rand() % CHARACTER_RANGE) + INITIAL_CHARACTER;
strncat(new_name, new_letter, sizeof(new_name) - strlen(new_name) - 1);
printf("New string is %s!\n", new_name);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果新信是F,预期结果应该是:
New string is ABF!
Run Code Online (Sandbox Code Playgroud)
相反,结果是:
New string is ABFAB!
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚为什么会这样.