如何在C中使用随机字符创建文件?

时间:2017-07-25 22:27:53

标签: c string char metaprogramming

使用rand()生成随机数没有问题 我必须使用一串char来创建一个输出文件,例如" AQSDJEIOFHDUK" 当rand()%26 +1的结果为1时,我将在文件中打印" A"当结果是" 2" B等等。我已经先知道字符串中有多少个字符,所以说50。 我用C语言做到了这一点。 我应该使用哪个功能? strcat的?

2 个答案:

答案 0 :(得分:3)

简单设置一个数组,其中包含通过rand()

选择的随机字母
#define RANDOM_STRING_LENGTH 50

char buf[RANDOM_STRING_LENGTH + 1];
for (size_t i = 0; i < RANDOM_STRING_LENGTH; i++) {
  buf[i] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"[rand() %26];
}
buf[RANDOM_STRING_LENGTH] = '\0';

puts(buf);

答案 1 :(得分:1)

您可以使用ASCII字符表生成有效字符。大写字母的基数为65,因此生成时

char new_char = 65 + rnd;
你可以说像

这样的话
char new_char = 'A' + rnd;

或正如其他人所说,它更容易阅读

rand() % 26

应根据'a'的结果在ascii字符表中为您提供一个字符。请记住,在C中,unsigned char实际上只是一种数据类型,范围从数字0到数字255。 (如下所述,签名字符的范围可以从-126到127)

'b'UUIDField之类的内容会被转换为等同的ascii。 (即它们代表的0到255之间的相应数字。)

(当然,除非你使用的是UNICODE。)

我希望这会有所帮助。