Hi ,
On Wed, Jun 18, 2008 at 4:44 PM, Wang Yu <[EMAIL PROTECTED]> wrote:

>
>
> On Wed, Jun 18, 2008 at 6:54 PM, vaibhav khatavkar <
> [EMAIL PROTECTED]> wrote:
>
>> Hi Wang Yu ,
>>
>>              I saw ur code ...
>>
>>
>>>
>>>
>>>     char
>>> *p;
>>>
>>>     p =
>>> 0;
>>>
>>>     *printf("%s",
>>> p);
>>>
>>>     printf("\n");   *
>>>
>>>
>> In ur first code snippet  "%s" prints string located at p .. and thats
>> null .. so we get output null ... (Note that : there are 2 printf
>> statements)
>>
>>
>>>
>>> The out put is *(null)*
>>>
>>
>> Now when u changed it like this ...
>>
>>> But, if I change into:
>>>
>>> #include
>>> <stdio.h>
>>>
>>>
>>> int
>>> main()
>>>
>>> {
>>>
>>>
>>>
>>>     char
>>> *p;
>>>
>>>     p =
>>> 0;
>>>
>>>    * printf("%s\n", p);      *
>>>
>>>
>>>     return
>>> 0;
>>>
>>> }
>>>
>>> The output will be* Segment fault*!
>>>
>>
>> The segmentation fault comes just because in printf statement u have
>> written "%s\n" .. compiler is unable to resolve it ... when u add a space
>> between %s and \n the output is null and not segmentation fault ..
>>
>>>
>      But why the complier is unable to resolve it when p is null? and it
> works when add a space after it?
>
 when compiler comes across "%s\n" it considers %s\n whole as a token ...and
is unable to to resolve ..
compiler only knows %s is string formating token and \n is new line token ..
but don't know what %s\n token means ... and so gives segmentation fault ...
:)

>
>
>>> I don't know why....
>>> Thanks!
>>> --
>>> National Research Center for Intelligent Computing Systems
>>> Institute of Computing Technology, Chinese Academy of Sciences
>>
>>
>>
>>
>> --
>> with regards,
>> vaibhav
>
>
>
>
> --
> National Research Center for Intelligent Computing Systems
> Institute of Computing Technology, Chinese Academy of Sciences
>



-- 
with regards,
vaibhav

Reply via email to