如何将字符数组中的字符串添加到 C 中的字符串

比特棒

我正在尝试创建一个从片假名(日语音节)生成随机单词的程序。

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <wchar.h>
#include <locale.h>

char* word;
char *kata[] = {"ア", "イ", "ウ", "エ", "オ", "カ", "キ", "ク", "ケ", "コ", "サ", "シ", "ス","セ","ソ","タ","チ","ツ","テ","ト","ナ","ニ","ヌ",
"ネ","ノ","ハ","ヒ","フ","ヘ","ホ","マ","ミ","ム","メ","モ","ヤ","ユ","ヨ","ラ","リ","ル","レ","ロ","ワ","ヲ","ン","ガ","ギ",
"グ","ゲ","ゴ","ザ","ジ","ズ","ゼ","ゾ","ダ","ヂ","ヅ","デ","ド","バ","ビ","ブ","ベ","ボ","パ","ピ","プ","ペ","ポ","ャ","ュ",
"ョ","ヴ","ァ","ィ","ゥ","ェ","ォ"};
int x = 0;

void generator (int length) {
      for (int z=0; z<length; z++) {
        x = rand() % sizeof(*kata);
        concat(word,kata[x]);
      }
}

int main (void) {
    srand((unsigned) time(NULL));
    int length = rand() % 5 + 2;
    generator(length);
    puts(word);
}

word是我想要打印的字符串,而kata是一个包含片假名的字符数组。但是,如果我不包含“*”来使数组成为字符串数组,C 会抱怨一个字符中有多个字符。其余代码在我的测试中运行良好。

我正在使用 BoUoW,它在 Windows 上有一个完整的 Ubuntu 环境,所以我认为这不是问题,而是我如何将字符串数组放入字符串中。

我在大约一个小时内用 Java 完成了一个类似的程序,这花了我更长的时间。虽然这可能是因为我是 C 的新手。

Ôrel

应该添加很多检查(例如在word上溢出)kata上的元素数量是sizeofkata/sizeof一个元素你可以做一个宏countof strcat是你需要的功能。

这个想法就像

char *kata[] = {"ア", "イ", "ウ", "エ", "オ", "カ", "キ", "ク", "ケ", "コ", "サ", "シ", "ス","セ","ソ","タ","チ","ツ","テ","ト","ナ","ニ","ヌ
",
    "ネ","ノ","ハ","ヒ","フ","ヘ","ホ","マ","ミ","ム","メ","モ","ヤ","ユ","ヨ","ラ","リ","ル","レ","ロ","ワ","ヲ","ン","ガ","ギ",
    "グ","ゲ","ゴ","ザ","ジ","ズ","ゼ","ゾ","ダ","ヂ","ヅ","デ","ド","バ","ビ","ブ","ベ","ボ","パ","ピ","プ","ペ","ポ","ャ","ュ",
    "ョ","ヴ","ァ","ィ","ゥ","ェ","ォ"};
int x = 0;

static void generator (int nb, char *word, size_t n) {
    word[0] = '\0';
    while (nb-- > 0) {
        x = rand() % (sizeof(kata) / sizeof(char*));
        strcat(word, kata[x]);
    }
}

int main (void) {
    char word[64];
    srand((unsigned) time(NULL));
    int nb = rand() % 5 + 2;
    generator(nb, word, sizeof(word));
    puts(word);
    return 0;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将JSON字符串添加到C#中的现有字符串

如何将字符附加到 C 中的字符串数组

将字符串添加到char数组并在C中以\ 0分隔

如何在C中将字符串添加到字符串数组

如何将字符串转换为 C++ 中字符串中字母大小的字符数组?

C# 如何将 <list> 字符串添加到 Listview

如何将字符串数组中的字符串存储到C中的变量中

C#如何最好地将字符串数组的元素添加到通用列表

如何从结构数组中获取所有元素,并将它们添加到 c 中的字符串中?

在C#中将2个本地字符串[]添加到单个数组中

如何将子字符串添加到字符串中

将\添加到c#中带引号的字符串

c ++将“\ u”添加到字符串

如何将字符串添加到数组?

C #__使用长度将字符串添加到字符串

C#如何将字符串列表添加到列表中

如何将字符串数组的元素添加到字符串数组列表?

c字符串未正确添加到字符串中,并且在使用printf时输出□

如何在C中字符串的开头添加字符?

如何正确清空 C 中的字符串(字符数组)?

如何在C ++中获取子字符串并在字符串之间添加字符

如何将包含特定字符串的URL添加到数组中?

如何将字符串数组组件添加到 XML 配置中?

如何将多个文本文件中的字符串添加到数组

如何将字符串添加到 php 函数内的数组中

验证字符串时,将字符串追加到字符串数组。C ++

如何将数组中的字符串分配给 C 中的变量(来自函数)?

如何将标记化的字符串存储到C中的数组中

如何将字符串字符的 ASCII 值解释为 C 中的字符?