70,023
社区成员




#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
int main(int argc, char* argv[])
{
int i = 1;//定义下标
char *pInputFir = (char*)malloc(sizeof(char)*i);//初始化指针并分配动态内存
//容错保护
if (NULL == pInputFir)
{
return 1;
}
char *pInputSec = NULL;//定义临时数据指针
//开始操作
do
{
*(pInputFir+i-1) = getche();//接收实际数据
//第一次判断是否为回车
if ('\r' == *pInputFir || '\n' == *pInputFir)
{
//给下标值初始化0
i = 0;
break;
}
//大小自增
i++;
pInputSec = (char*)malloc(sizeof(char)*i);/*给临时指针分配比上一个空间大1的内存空间,如果内存不足怎么办?*/
//临时空间容错保护
if (NULL == pInputSec)
{
return 1;
}
/*暂时以临时空间作为数据存储空间进行备份,但是每次备份都是遍历,那有什么有效办法提高效率?*/
for (int j = 0; j < i; j++)
{
*(pInputSec + j) = *(pInputFir + j);
}
free(pInputFir);//释放实际内存
//实际操作指针指向临时内存
pInputFir = pInputSec;
}
while ('\r' != *(pInputSec+i-2) && '\n' != *(pInputSec+i-2));//当回车换行时结束
//给予结束符
if(0 == i)
*pInputFir = '\0';
else
*(pInputFir+i-2) = '\0';
//输出测试
printf("\n%s\n", pInputFir);
//释放实际操作内存和指针
free(pInputFir);
// //释放临时内存
/* free(pInputSec);在这里如果释放临时内存将会引起程序崩溃,因为正在使用当中的内存不应该被释放,那么我临时内存想释放掉如何做?总不能无缘无故一直占用资源吧?*/
pInputFir = NULL;
pInputSec = NULL;
return 0;
}