首页 > 代码库 > C和指针 (pointers on C)——第十一章:动态内存分配(下)习题

C和指针 (pointers on C)——第十一章:动态内存分配(下)习题

1、编写calloc,内部用malloc。

void *calloc (size_t n, size_t size)
{
	char * memory;
	memory =(char*) malloc(n * size);
	while( memory != NULL)
	{
		char * ptr;
		ptr = memory;
		while ( --n >= 0)
		{
			*ptr++ = '\0';
		}
	}
	return memory;

}
2、编写一个函数,动态存储一列输入的整数。

#include <stdlib.h>

int * readints()
{
	int *array;
	int value;
	int length = 1;
	array = (int *) malloc(length * sizeof(int));
	if (array == NULL)
	{
		return NULL;
	}
	while ( scanf_s("%d", &value) == 1)
	{
		length++;
		array =(int *) realloc(array,  length * sizeof(int));
		if (array == NULL)
		{
			return NULL;
		}
		array[length-1] = value;
	}
}

3、编写一个函数,动态存储一列输入的char。


#include "stdlib.h"

char * readstring()
{
	char *array;
	char *ptr;
	int length = 1;
	array = (char *) malloc (sizeof(char));
	gets(ptr);
	if (ptr == NULL)
	{
		exit (EXIT_FAILURE);
	}
	while (*ptr != NULL )
	{
		length++;
		array  = (char *) realloc (array , length * sizeof(char));
		if (array == NULL)
			exit (EXIT_FAILURE);
		array[length - 1] = *ptr;
		ptr++;
	}
	//追加一个NUL
	array  = (char *) realloc (array , (length++) * sizeof(char));
	if (array == NULL)
		exit (EXIT_FAILURE);
	array[length - 1] = '\0';
	return array;
}



C和指针 (pointers on C)——第十一章:动态内存分配(下)习题