C Programming - Pointers - Discussion
Discussion Forum : Pointers - Find Output of Program (Q.No. 14)
                   
                                       
                                14.
What will be the output of the program ?
 
                                    #include<stdio.h>
int main()
{
    char *str;
    str = "%d\n";
    str++;
    str++;
    printf(str-2, 300);
    return 0;
}
Discussion:
43 comments Page 2 of 5.
                
                        RAJ KISHOR YADAV said: 
                         
                        1 decade ago
                
                #include <stdio.h>
int main()
{
char *str="**********";
int i;
for(i=0;i<=3;i++)
printf("%*..*s\n",30,i,str);
return 0;
}
Hi guys,
Can any explain it?
                int main()
{
char *str="**********";
int i;
for(i=0;i<=3;i++)
printf("%*..*s\n",30,i,str);
return 0;
}
Hi guys,
Can any explain it?
                        Srbh said: 
                         
                        1 decade ago
                
                char *ch;
ch="%d";
printf(ch,300);
printf("ch\n",300);
printf(ch,"300");
Anyone please explain me how these 3 printf statements differs ?
                ch="%d";
printf(ch,300);
printf("ch\n",300);
printf(ch,"300");
Anyone please explain me how these 3 printf statements differs ?
                        Aditya Pandey said: 
                         
                        9 years ago
                
                Let adress of str =5000.
When it increased twice = 500+(1*4)+1*4)=5008.
But in the next line, there is str-2, it comes back on it's previous location.
So it prints value 300.
                When it increased twice = 500+(1*4)+1*4)=5008.
But in the next line, there is str-2, it comes back on it's previous location.
So it prints value 300.
                        Ashlesha said: 
                         
                        1 decade ago
                
                Are you want to say in last step that if str-1 it will pt to 102 and again to 100. That means here compiler will take str-2 is for twice time instead of 2 bytes. , right?
                
                        Sahana said: 
                         
                        1 decade ago
                
                printf("%d",300); and print 300.
But in case like:
char *str;
str="abc";
printf(str,"mno\n");
The output will be "abc".
                But in case like:
char *str;
str="abc";
printf(str,"mno\n");
The output will be "abc".
                        Siya said: 
                         
                        9 years ago
                
                Can we declare print statement like printf(str-2, 300);?
MY question is where is "%c" or " "%s"in printf statement. If it is true then how it works?
                MY question is where is "%c" or " "%s"in printf statement. If it is true then how it works?
                     (1)
                
            
                        Vinay said: 
                         
                        1 decade ago
                
                We all know that we cannot substract any integer value in pointer then how can we substract 2 in it please. Any one who know answer this ?
                
                        Sujith said: 
                         
                        1 decade ago
                
                str-2 one's incremented then  it becomes str-1
then again incremented then it becomes str
then str="%d\n"; then 300 will print
                then again incremented then it becomes str
then str="%d\n"; then 300 will print
                        Santhisuresh said: 
                         
                        1 decade ago
                
                We gave str++ two times it gives str=str+2. In printing we are subtract 2 from str+2(i.e str+2-2). Therefore it prints the same value.
                
                        HarshaN said: 
                         
                        1 decade ago
                
                @Vallabh
Why only one argument in the printf gets printed instead of two arguments in your second example?
Some one pls explain
                Why only one argument in the printf gets printed instead of two arguments in your second example?
Some one pls explain
Post your comments here:
 
            
        Quick links
                            Quantitative Aptitude
                                    
                                    Verbal (English)
                                    
                                    Reasoning
                                    
                                Programming
                                    
                                    Interview
                                    
                                     Placement Papers