--- Paul Herring <[EMAIL PROTECTED]> wrote:

> On 02 Apr 2007 10:36:38 -0700, satya dev
> <[EMAIL PROTECTED]> wrote:
> >
> > I made changes in the code main (I had problem
> with this code )
> > ignore previooous mail
> >
> ---------------------------------------------------
> > The purpose of the code is to return array of
> strings variable to main
> > I am giving input 3 strings in function call()
> > these strings are stored in a variable "str"
> > then that is returned to main, I want to print
> them in main..
> > if i give input as
> > ---------------------------
> > aaa
> > bbb
> > ccc
> > ------------------------------
> > output is
> > ------------------------
> > aaa
> > garbage value
> > garbage value
> > ---------------------------------
> >     I want to know why garbage values are being
> printed..............
> > ----------------------------------here is the code
> ----------------------
> > #include<stdio.h>
> >
> > char* call()
> > {
> >         int k=3,h=0;
> >         char *str[3];
> 
> 
> You're creating a LOCAL string here with space for
> only TWO letters.
> 
Actually creating an array of pointers.  Then using
the pointers below without allocating any space for
them.


>         for(h=0;h<k;h++)
> >         {
> >                      printf("Enter the String");
> >                 scanf("%s",str+h);
> 
> 
> If you enter more than 2 letters here, the results
> are undefined.
> 
>          }
> >         return *str;
This would only return the pointer to the first of the
three strings if there had been space allocated for
the pointer to point to.

Ray
> 
> 
> Here you return the pointer to the local string,
> which is then promptly
> 'destroyed' - referencing this address after this
> point results in undefined
> behaviour.
> 
> }
> > int main()
> > {
> >         int i=3,j=0;
> >         char *name[i];
> >
>         *name=call();
> 
> 
> The pointer returned from call() is not useable.
> 
>         for(j=0;j<i;j++)
> >         {
> >                      printf("The string %d",j);
> 
> 
> What string are you expecting at address 0?
> 
>                 printf("%s\n",name+j);
> 
>         }
> >
> >         return 0;
> > }
> >
> 
> 
> 
> -- 
> PJH
> Aio, quantitas magna frumentorum est
> 
> 
> [Non-text portions of this message have been
> removed]
> 
> 



       
____________________________________________________________________________________Looking
 for a deal? Find great prices on flights and hotels with Yahoo! FareChase.
http://farechase.yahoo.com/

Reply via email to