0

私が達成しようとしているのは、100 個のランダムな 0 と 1 を生成し、それらをすべて 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);
}
4

2 に答える 2

6

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;
}
于 2009-06-09T08:06:07.420 に答える
1

これを試して:

int i = 100;

while(i-- >= 0) buffer[i] = rand() % 2;
于 2009-06-09T08:08:17.087 に答える