2009-06-09 3 views
0

내가 달성하고자하는 것은 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); 
} 
+0

, 당신이 원하는 문자 '0'(= 48)과 '1'(= 49)을하지 0 그리고 1 –

+1

그리고 나는 또한 권하고 싶습니다 : return to Dropping()이 더 명확 해지기 때문에 {}을 (를) 추가하는 것은 함수가 아닙니다. 그리고! 버퍼를 반환 할 수 없습니다! 메인에 정적으로 할당하고 패스하거나 동적으로 randstring에 할당해야합니다 (malloc 사용) – alamar

+0

chnage buffer [i] = rand() % 2; to buffer [i] = (rand() % 2)? '1': '0'; –

답변

6

방법에 대한 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; 
} 
+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