[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
Re: A simple C doubt
Hi
Try this function getstr. I hope there is no buffer overflow...
#include <unistd.h>
#include <stdio.h>
char *getstr(void)
{
unsigned char *dst;
int c;
if ((dst=(unsigned char *)malloc(1)) == NULL) return 0;
dst[0]='\0';
while((c = getchar()) != '\n')
{
if ((dst=(unsigned char *)realloc(dst, strlen(dst)+3)) == NULL)
return 0;
sprintf(dst, "%s%c", dst, c);
}
return dst;
}
int main(int argc, char *argv[])
{
char *str;
printf("Text: ");
fflush(stdout);
if ((str = getstr()) == NULL)
{
printf("Error: No memory free!\n"); exit(1);
}
printf("Text = %s\n", str);
return 0;
}
On Wed, 20 Aug 2003 01:39:50 -0300
Igor Cabral Corr <imortis@uol.com.br> wrote:
> Hi people!
>
> How can I try to read a line from stdin (in fact, a file piped into stdin) and know if the read line is empty or not?
> I want to read, for example:
>
> asdakldakl
>
> aljdajkdja
> aljkdk
>
> How can I read these 4 lines? Using something like
>
> for (int i=0; i<4; i++) scanf("%s", line);
>
> the empty line will be skipped, and I don´t know that. Someone knows an easy way to do it?
> PS.: I know how many lines I want to read.
>
> []´s
> Igor Cabral Corrêa
>
--
http://www.againsttcpa.com/ - Don't let them take YOUR RIGHTS!