簡體   English   中英

如何連接char *字符串?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM