[英]How to concatenate char* strings?
我試圖通過連接隨機的元音和輔音來生成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
函數中,因此我也將其放置在那里。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.