什么是C库函数生成随机字符串?

cod*_*ody 10 c

是否有库函数以创建mkstemp()唯一文件名的相同方式创建随机字符串?它是什么?

aut*_*tic 13

没有标准功能,但您的操作系统可能会实现某些功能.您是否考虑过搜索手册?或者,这项任务很简单.我很想使用类似的东西:

#include <assert.h>
#include <stdio.h>
#include <stdlib.h>

void rand_str(char *, size_t);

int main(void) {
    char str[] = { [41] = '\1' }; // make the last character non-zero so we can test based on it later
    rand_str(str, sizeof str - 1);
    assert(str[41] == '\0');      // test the correct insertion of string terminator
    puts(str);
}

void rand_str(char *dest, size_t length) {
    char charset[] = "0123456789"
                     "abcdefghijklmnopqrstuvwxyz"
                     "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

    while (length-- > 0) {
        size_t index = (double) rand() / RAND_MAX * (sizeof charset - 1);
        *dest++ = charset[index];
    }
    *dest = '\0';
}
Run Code Online (Sandbox Code Playgroud)

这有利于在EBCDIC系统上正常工作,并且几乎可以容纳任何字符集.我没有在字符集中添加以下任何字符,因为很明显你想要的字符串可能是文件名:

":;?@[\]^_`{|}"

我认为许多这些角色在各种操作系统的文件名中可能无效.