메모리에서 정수를 저장하고 출력하는 프로그램을 작성해야합니다. 나는 realloc을 사용해야한다. 기본적으로이 프로그램은 크기를 2 정수로 할당합니다. 입력에 2 int가 주어지면, 1 int에 대한 공간을 재 할당해야하며 double을 출력합니다. 입력 3의 int를 부여 할 때 다음, 그것은 인터넷 용 2 이상의 공백을 할당해야 두 번 .. 등등 출력합니다 .. C 프로그래밍 :이 프로그램에서 realloc은 어떻게 사용합니까?
Test cases:
input file in.0:
------
4
------
expected output:
------
4
------
=================================================
input file in.1:
------
4 5
------
expected output:
------
4
5
double
------
==================================================
input file in.2:
------
4 5 3
------
expected output:
------
4
5
double
3
double
------
===================================================
input file in.3:
------
4 5 3 2 9
------
expected output:
------
4
5
double
3
double
2
9
double
나는이 프로그램을 작성하지만 제대로 메모리를 할당하지 않습니다. 누군가 나를 쓰기 방향으로 안내 할 수 있습니까?
int main(void)
{
int c;
int digit;
int count = 0;
int d_size = 1;
int init_size = 2;
int *p = (int *) malloc(sizeof(int) * init_size);
while((c = scanf("%i", &digit)) != EOF)
{
if (c == 1)
{
*(p+count) = digit;
count++;
}
else
{
printf("not valid");
}
printf("%i\n", digit);
if (count >= 2)
{
printf("double\n");
p = (int *) realloc(p, sizeof(int) * d_size);
d_size = d_size * 2;
}
}
젠장, 빌어 먹을 realloc과의 빌어 먹을 반환 값을 캐스팅하지 마십시오! –
"메모리를 올바르게 할당하지 못했습니다."-보다 자세히 설명하십시오. 어떤 방법으로 작동하지 않습니까? –
@ H2CO3 : +1 여기에 자주 * soooooo *가 표시되어 있기 때문에 +1이 있습니다. 이것은 C++이 아니므로'malloc' (이 경우에는'realloc')의 반환 값을 변환하지 마십시오! –