2009-06-09 9 views
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); 
} 
+0

は、あなたがしたい文字 '0'(= 48)と '1'(= 49)でない0そして1 –

+1

そして、私もお勧め: はしばらくの間に} {追加することが明確に ドロップ(になるので)、リターンから、それが機能しません。 そして!バッファーを返すことはできません!主に静的に割り当てて渡すか、動的にrandstringで割り当てる(mallocを使用する)必要があります。 – alamar

+0

chnage buffer [i] = rand()%2;バッファ[i] =(rand()%2)に? '1': '0'; –

答えて

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; 
} 
+0

+1。私から。完全なコードを表示するupdatinbgの価値があるかもしれませんか... ... –

+0

さらに良い。良いですね! –

+0

別の小さな修正。 – alamar

1

これを試してみてください:私たちを与える

@alamarが指摘したように
int i = 100; 

while(i-- >= 0) buffer[i] = rand() % 2; 
+1

これは良くありません。キャラクタバッファを0と1で埋めます。これは印刷できません。彼がおそらく望んだのは「0」と「1」です。 –

+0

これはうまく機能しているが、リターンは私に のmain.cのエラー与える:35:警告:リターンキャスト のmain.cなしポインタから整数を作る:35:警告:関数がローカル変数 すべて完了のアドレスを返します – austin

関連する問題