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