端午回家~
[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编辑过]