题
我想要完成的是生成 100 个随机 0 和 1,将它们全部添加到一个变量中,然后打印它。我现在所拥有的,我不知道如何发挥作用。如果有人能解释我做错了什么,我将非常感激。
randstring (void){
int i;
int num;
char buffer[101];
i=100;
while(i>0, i--){
num = rand()%2;
strcpy(buffer, num);
}
return(buffer);
}
我现在拥有的是:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
main (void){
printf("%f", randstring());
}
randstring (void){
int num;
char buffer[101];
int i = 100;
while(i-- >= 0) buffer[i] = rand() % 2;
return(buffer);
}
解决方案
怎么样 buffer[i] = (rand() % 2) ? '1' : '0';
在循环体中?
我会做 buffer[100] = 0;
但更糟糕的问题是你不能返回缓冲区,因为一旦你的函数退出,它就会被覆盖。它在堆栈上分配,并且当函数退出时堆栈会被重用。您需要执行 malloc 和 free,或者将缓冲区及其长度传递给此函数。
这给了我们:
#include <stdio.h>
#define RAND_LENGTH 100
char *randstring (char *buffer, int length);
int main (int a, char **b){
char buffer[RAND_LENGTH + 1];
printf("%s", randstring(buffer, RAND_LENGTH));
}
char *randstring (char *buffer, int length){
int i = length;
while(--i >= 0) {
buffer[i] = (rand() % 2) ? '1' : '0';
}
buffer[length] = 0;
return buffer;
}
其他提示
尝试这种情况:
int i = 100;
while(i-- >= 0) buffer[i] = rand() % 2;
不隶属于 StackOverflow