《c primer plus》12.9 编程练习 第9题
作者:互联网
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define NUM 20
char ** word(int score);
void show(char ** ps, int n);
int main(void)
{
int i;
char **ch;
int score;
printf(“你要输入多少个单词: “);
while(scanf(”%d”, &score)==1 && score >0)
{
ch = word(score);
show(ch, score);
for(i = 0; i< score; ++i) //释放动态分配内存
free(ch[i]);
free(ch);
printf("你要输入多少个单词: ");
}
return 0;
}
void show(char ** ps, int n)
{
int i;
puts("输入的单词是: ");
for(i=0;i<n; ++i)
puts(ps[i]);
}
char ** word(int score)
{
char **st;
char *ps;
char ch[NUM];
int i;
printf("请输入单词: \n");
st = (char **)malloc(sizeof(char *) * score); //动态分配指针数组,每个元素都是指向 char 类型的指针
if(st == NULL)
exit(-1);
for(i =0; i < score; ++i)
{
scanf("%s", ch);
ps = (char *)malloc(strlen(ch)+1); //动态分配 char 数据类型 数组
if(ps == NULL)
exit(-1);
strcpy(ps, ch);
st[i] = ps; //指针数组中的 每一个元素,都指向相应的字符串
}
return st;
}
标签:ps,ch,int,st,char,score,plus,12.9,primer 来源: https://blog.csdn.net/wentzheng/article/details/111627923