我试图通过连接随机元音和辅音来生成一个name
字符串。
我尝试使用 strcat
将随机元音/辅音连接到 name
字符串,但这会导致段错误。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
[...]
char randomVowel() {
char * vowels = "aeiou";
return vowels[randomRange(0, 4)];
}
char randomConsonant() {
char * consonants = "bcdfghjklmnpqrstvxwyz";
return consonants[randomRange(0, 20)];
}
char * randomName() {
int i;
char * name;
for (i = 0; i < randomNumber(20); i++){
i % 2 ? strcat(name, randomVowel()) : strcat(name, randomConsonant());
}
return name;
}
int main () {
printf("%s\n", randomName());
return 0;
}
解决这个问题的最佳方法是什么?
最佳答案
你可能需要做这样的事情:
void appendChar(char *name, int len, char c) {
name[len] = c;
}
char * randomName(char *name) {
int i;
for (i = 0; i < randomNumber(20); i++){
i % 2 ? appendChar(name, i, randomVowel()) : appendChar(name, i, randomConsonant());
}
return name;
}
int main () {
char name[32] = "";
time_t t;
srand((unsigned) time(&t));
printf("%s\n", randomName(name));
return 0;
}
这样,您只需将生成的每个字符放在 name
字符串的末尾。您通常希望在 main
函数中播种随机数生成器,因此我也将其放在那里。
关于c - 如何连接 char* 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55543299/