端午回家~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
[此贴子已经被作者于2017-5-28 08:06编辑过]

程序代码:#ifndef INPUT_DATA
#define INPUT_DATA
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<string.h>
#include<ctype.h>
#define BUFF_MAX 10 //最大缓冲区
void Input_UN_Int(char** ); //输入长无符号整数
void Absorb_Buffer(char** ); //对缓冲区残留数据进行处理
void Input_UN_Int(char** p) //初始化数据
{
char* pt=NULL;
size_t length=0;
pt=*p=(char* )malloc((BUFF_MAX)*sizeof(char));
assert(*p!=NULL);
memset(*p,0,sizeof(pt));
while (isdigit(*pt=getchar()))
{
++length;
if (length%(BUFF_MAX-1)==0)
{
assert(realloc(*p,(length+BUFF_MAX)*sizeof(char)));
memset(*p+length,0,BUFF_MAX*sizeof(char));
pt=*p+length-1;
}
++pt;
}
if (*pt=='\n')
{
*pt='\0';
return ;
}
Absorb_Buffer(p); //对缓冲区残留数据进行处理
}
void Absorb_Buffer(char** p)
{
while (getchar()!='\n');
free(*p);
*p=strdup("");
}
#undef BUFF_MAX
#endif
程序代码:#include<stdio.h>
#include"Input.h"
int main()
{
char* p1=NULL;
char* p2=NULL;
Input_UN_Int(&p1);
Input_UN_Int(&p2);
puts(p1);
puts(p2);
free(p1);
free(p2);
return 0;
}[此贴子已经被作者于2017-5-28 21:56编辑过]
