Как насчет buffer[i] = (rand() % 2) ? '1' : '0';
в теле цикла?
И я бы сделал буфер [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;
}