我试图通过连接随机的元音和辅音来生成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;
}
解决此问题的最佳方法是什么?
答案 0 :(得分:1)
您可能需要执行以下操作:
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
函数中,因此我也将其放在那里。