c·c++/c 프로그래밍

realloc 연습

바로이순간 2013. 6. 3. 01:49

malloc을 이용하여 5바이트 문자열을 생성한 후, 랜덤으로 소문자를 만들면서 문자열에 저장하다가 

알파벳 h가 발생하면 화면에 출력, 그리고 역으로 한번 더 출력하는 프로그램.

 

(if문을 이용하여 5바이트가 초과시에는 realloc을 사용해서 5바이트 늘어나게한다.)

(rand()%20+97을 사용.)

 

따로 입력값이 없는 프로그램입니다.

ex)

asdfadfdsafh

hfasdfdafdsa


#include <stdio.h>

#include <stdlib.h>

#include <time.h>

int main() {

    char *p;

    int i=0, n=5, x;

    srand(time(NULL));

    p=(char *)malloc(5);

    while(1) {

        x=rand()%26+97;

        if(i>=n) { 

            n+=5; 

            p=realloc(p, n);

            if(p==NULL) {

                printf("메모리를 할당하지 못했습니다.\n");

                return 1;

            }

        } 

        p[i]=(char)x;

        i+=1;

        if(x=='z') { break; }

    }

    n=i;

    for(i=0;i<n;i+=1) {

        printf("%c", p[i]);

    }

    printf("\n");

    for(i=0;i<n;i+=1) {

        printf("%c", p[n-1-i]);

    }

    printf("\n");

    

    return 0;

}