Random 返回字符数组
我编写了一个函数来生成随机名称。这是我的密码Random 返回字符数组,random,character,Random,Character,我编写了一个函数来生成随机名称。这是我的密码 char *getrandumstring(int n) { int i; char *str; for(i=0;i<n;i++) { str[i] = (rand() % 26) + 'a'; } str[i]='\0'; return str; } 我犯了一个错误。为什么?您会遇到分段错误,因为在创建指针时,您没有为其分配任何备份存储 char *getRando
char *getrandumstring(int n)
{
int i;
char *str;
for(i=0;i<n;i++)
{
str[i] = (rand() % 26) + 'a';
}
str[i]='\0';
return str;
}
我犯了一个错误。为什么?您会遇到分段错误,因为在创建指针时,您没有为其分配任何备份存储
char *getRandomString (int n) {
int i;
char *str = malloc (n + 1);
if (str != NULL) {
for (i = 0; i < n; i++)
str[i] = (rand() % 26) + 'a';
str[n] = '\0';
}
return str;
}
char*getRandomString(int n){
int i;
char*str=malloc(n+1);
如果(str!=NULL){
对于(i=0;i
上面的代码将成功分配内存并返回缓冲区。或者,如果没有可用内存,它将返回NULL。只要记住完成后把它放出来就行了
或者,如果不想使用动态内存分配,请让调用者也提供缓冲区:
void getRandomString (char *str, int n) {
int i;
for (i = 0; i < n; i++)
str[i] = (rand() % 26) + 'a';
str[n] = '\0';
}
// Somewhere else in your code:
#define STR_SZ 20
char buffer[STR_SZ+1];
getRandomStr (buffer, sizeof(buffer) - 1);
void getRandomString(char*str,int-n){
int i;
对于(i=0;i
谢谢。我用了第二个。但第一个也明白了。
void getRandomString (char *str, int n) {
int i;
for (i = 0; i < n; i++)
str[i] = (rand() % 26) + 'a';
str[n] = '\0';
}
// Somewhere else in your code:
#define STR_SZ 20
char buffer[STR_SZ+1];
getRandomStr (buffer, sizeof(buffer) - 1);