Frage

Was ich versuche 100 zu erreichen, ist die Erzeugung von Zufalls 0 und 1 ist, sie alle in einer Variablen hinzufügen und anschließend ausdrucken. Was ich habe, jetzt weiß ich nicht, wie die Arbeit zu machen. Wenn jemand könnte erklären, was ich falsch mache, wäre ich sehr dankbar.

randstring (void){
    int i;
    int num;
    char buffer[101];
    i=100;
    while(i>0, i--){
        num = rand()%2;
        strcpy(buffer, num);
    }
    return(buffer);
}

Was ich nun:

#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);
}
War es hilfreich?

Lösung

Wie wäre es buffer[i] = (rand() % 2) ? '1' : '0'; in der Schleife?

Und ich würde es buffer [100] = 0;

Aber das schlimme Problem ist, dass Sie nicht Puffer zurückkehren können, denn sobald Ihre Funktion beendet wird, würde es überschrieben. Es basiert auf dem Stapel reserviert, und der Stapel wieder verwendet wird, wenn die Funktion beendet. Sie müssen entweder tun malloc und frei, oder Pass-Puffer und seine Länge zu dieser Funktion.

Was gibt uns:

#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;
}

Andere Tipps

Versuchen Sie folgendes:

int i = 100;

while(i-- >= 0) buffer[i] = rand() % 2;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top