собирать числа и распечатывать их
-
13-09-2019 - |
Вопрос
Я пытаюсь создать 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