собирать номера и печатать их - PullRequest
0 голосов
/ 09 июня 2009

Я пытаюсь создать 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);
}

Ответы [ 2 ]

6 голосов
/ 09 июня 2009

Как насчет 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;
}
1 голос
/ 09 июня 2009

Попробуйте это:

int i = 100;

while(i-- >= 0) buffer[i] = rand() % 2;
...