質問
私は何を達成しようとしていることの一つの変数にそれらのすべてを追加し、それを印刷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;
所属していません StackOverflow