質問

私は何を達成しようとしていることの一つの変数にそれらのすべてを追加し、それを印刷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';はどうですか?

私は[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;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top