ianclever
(usa Arch Linux)
Enviado em 14/12/2013 - 15:23h
dei mais uma enxugada, agora está bem menor, só que limitado a stdin, vejam:
#include <stdio.h>
#include <string.h>
char *new_gets()
{
char *str;
int tam,ch;
ch=getchar();
ungetc(ch,stdin);
tam=strlen(stdin->_IO_read_base);
str=(char *)malloc(sizeof(char)*(++tam));
str[tam]='\ 0';
strcpy(str,stdin->_IO_read_base);
return str;
}
int main(void)
{
char *p;
p=new_gets();
printf("\n%s",p);
free(p);
return 0;
}
assim o buffer continua sujo e assim não:
#include <stdio.h>
#include <string.h>
char *new_gets()
{
char *str;
int tam,ch;
ch=getchar();
ungetc(ch,stdin);
tam=strlen(stdin->_IO_read_base);
str=(char *)malloc(sizeof(char)*(++tam));
str[tam]='\ 0';
fgets(str,tam,stdin);
return str;
}
int main(void)
{
char *p;
p=new_gets();
printf("\n%s",p);
free(p);
return 0;
}