#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
int main(void)
{
long *psum = NULL;//总字符数
long *pnum = NULL;//第几个字符
char *pstr = NULL;//最终输出字符串
char *pTemp = NULL;//扩展内存用,防止realloc溢出
long *pfor_num = NULL;//for循环用
pnum = calloc(1, sizeof(long));
if (!pnum)
{
return 1;
}
psum = calloc(1, sizeof(long));
if (!psum)
{
free(pnum);
return 1;
}
*pnum = 0L, *psum = 5L;
pstr = calloc(*psum, sizeof(char));
if (!pstr)
{
free(pnum);
free(psum);
return 1;
}
*(pstr + 0) = ' ';
printf("请输入语句:\n");
//将字符依次读入
while (*(pstr + *pnum) != '\n')
{
//扩展内存
if (*pnum + 2 > *psum)
{
*psum += 10;
pTemp = realloc(pstr, *psum * sizeof(char));
if (!pTemp)
{
free(pnum);
free(psum);
free(pstr);
return 1;
}
pstr = pTemp;
}
pstr[++(*pnum)] = getchar();
}
//替换使用getchar所产生的\n
pstr[*pnum] = '\0';
pfor_num = calloc(1, sizeof(long));
if (!pfor_num)
{
free(pnum);
free(pstr);
free(psum);
return 1;
}
*pfor_num = 0L;
//依次输出字母字符
for (; *pfor_num <= *pnum; ++(*pfor_num))
{
if (isalpha(pstr[*pfor_num]))
printf("%c", pstr[*pfor_num]);
}
printf("\n");
//释放内存
free(pnum);
pnum = NULL;
free(pstr);
pstr = NULL;
free(psum);
psum = NULL;
free(pfor_num);
pfor_num = NULL;
system("pause");
return 0;
}
《C语言入门经典》习题7.3(仅供与某人讨论使用)
最新推荐文章于 2022-04-26 18:20:22 发布