锯齿数组(动态开辟空间)

#include<stdio.h>
#include<stdlib.h>
#include<memory.h>
#include<string.h>

#define MAXSIZE 100
char string[MAXSIZE];//设置一个静态数组,保存输入量
char **str; //指向指针的指针
char *strdup(char str[],int j);//动态分配函数

int i;//全局变量i
int main()
{
printf("please input the line of you output:");
scanf("%d",&i);//输入你想显示多少行
str=(char **)malloc(sizeof(char)*i);//给指针的指针分配一个行空间(代表有多少行)
int j=0,k;
for(;j<i;j++)
{
scanf("%s",string);//输入你要显示的字符串
strdup(string,j);//j代表某一行
}


for(k=0;k<j;k++)
printf("%s\n",*(str+k));//输出字符串
return 0;
}

char *strdup(char string[],int j)
{
*(str+j)=(char *)malloc(sizeof(char)*(strlen(string)));//为某一行开辟一个和输入的string相同长度的空间
strcpy(*(str+j),string);//复制字符串
return *(str+j);//返回
}

原文地址:https://www.cnblogs.com/sherlockhomles/p/3088998.html