Question

Ce que je suis en train d'accomplir génère 100 aléatoire 0 et de 1 les ajouter dans une variable puis l'imprimer. Ce que j'ai en ce moment, je ne sais pas comment faire fonctionner. Si quelqu'un pouvait expliquer ce que je fais mal, je serais très reconnaissant.

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

Ce que j'est maintenant:

#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);
}
Était-ce utile?

La solution

Qu'en est-buffer[i] = (rand() % 2) ? '1' : '0'; dans le corps de la boucle?

Et je ne buffer [100] = 0;

Mais le problème est pire que vous ne pouvez pas revenir tampon, parce que dès votre sortie de la fonction, il serait écrasé. Elle est répartie sur la pile et la pile se réutilisé lorsque l'on quitte la fonction. Vous devez soit faire malloc et libre, ou passer tampon et sa longueur à cette fonction.

Ce qui nous donne:

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

Autres conseils

Essayez ceci:

int i = 100;

while(i-- >= 0) buffer[i] = rand() % 2;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top