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.

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.
please explain that why this code will not take more than two characters???
}
> return *str;

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]



         


  Mian Ahson Iqbal


  
 

         
---------------------------------
Looking for earth-friendly autos? 
 Browse Top Cars by "Green Rating" at Yahoo! Autos' Green Center.  

[Non-text portions of this message have been removed]

Reply via email to