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

}

上一篇:c++primer(学习第四章笔记)


下一篇:C++ Primer 第2章 变量和基本类型 复习笔记