main()
{
char *p1="Name";
char *p2;
p2=(char *)malloc(20);
while(*p2++=*p1++);
printf("%s\n",p2);
}
what is the output?
Answers were Sorted based on User's Feedback
Answer / sanath
ANS: NULL
It is a bit tricky question. If u observe carefully then we
are incrementing the pointers p1,p2. When it reached the end
of the string, *p2 points to NULL. We have lost the address
of the starting position.
| Is This Answer Correct ? | 40 Yes | 5 No |
Hi all,
#1 Mannucse's ans is wrong. cos as mentioned "Name" will
not be the output.
#2 Sanath's ans is wrong. Cos at the end of the while loop,
p2 will not point to NULL. It will point to the next byte
to the NULL termination ie., 6th byte.
#3 Shruti's ans is wrong. cos i think she got confused
between assignment(=) and comparisonal(==) operators. And
the statement given as "we cannot copy the value of p1 in
p2, the way its mentioned here" is absolutely wrong.
So,
Lets Analyse the program and how to get the required output.
hav a look on th program again.
main()
{
char *p1="Name";
char *p2;
p2=(char *)malloc(20);
while(*p2++ = *p1++)
{
printf("TEST \n");
}
printf("%s\n",p2);
getch();
}
Here, in every iteration of while loop, we are assigning
*p1 to *p2, and incrementing both pointers p1 and p2, After
completion(when *p1 value would be '\0')of the while loop,
first 5 bytes of p2 holds the
characters 'N','a','m','e' '\0'. At the end of while loop
p2 points to the 6th byte in the memory.
So, now printf("%s\n",p2); shall start print the values
from the 6th byte to 20th bytes of the memory which was
allocated dynamically.
----------------------------------
To get the desired output change the printf statement to
printf("%s\n",p2-5);
Now (p2-5) points to the starting address of p2 and will
print the values in the memory till it encounters '\0'
termination. ie., The output would be -> Name
| Is This Answer Correct ? | 9 Yes | 6 No |
In addtion to the answer #5.
printf("%s\n",p2); will print the values from 6th byte to
20th byte.
6th byte to 20th bytes of the memory will contain some
Garbage value. So the output will be a string of garbage
values.
For desired o/p see the ans #5
| Is This Answer Correct ? | 6 Yes | 3 No |
Answer / ali fakoor
A part of uninitialized (and/or unowned) memory after (and
including) the sixth byte of the malloc-ed memory will be
printed out until reaching a NULL character in the memory
somewhere!
| Is This Answer Correct ? | 6 Yes | 4 No |
int main()
{
char *p1="Name";
char *p2,*s1,*s2;;
p2=(char *)malloc(20);
s1 = p1;
s2 = p2;
while(*p2++ = *p1++);
printf("%s %s",s1,s2);
return 0;
}
Store the Start address of p1 and p2 before incrementing the pointer so that it could be later used to print the String.
| Is This Answer Correct ? | 1 Yes | 0 No |
-> while(*p2++ "=" *p1++)
the syntax of while is
while("condition");
in condition statement the assignment operator is used in a
wrong way..
when we are using loop it should be "=="..
we cannot copy the value of p1 in p2, the way its mentioned
here..
** It will either give an error or display some garbage
value in p2 , or no value..
depends on what p2 is initialised to implicitly..
| Is This Answer Correct ? | 1 Yes | 12 No |
What are qualifiers in c?
What is the main differences between C and Embedded C?
what is the definition of storage classes?
how many times does the loop iterated ? for (i=0;i=10;i+=2) printf("Hi\n");
Explain what is the difference between a string copy (strcpy) and a memory copy (memcpy)? When should each be used?
is it possible to create your own header files?
Hello friends !!! I’am Abhinav Ranjan Sinha College- L.K.C.T(Indore) I just want to express my personnal experience of getting placed at Consagous Technologies,to all freshers who are in search of the job. On 25th of Feb 2011 there was a campus drive of Consagous Technologies in our college.That was the second time any software company is coming to our college for batch, I was very excited. Firstly, they started with a seminar, a small introduction about the company.Then as the first round of the placement process, they conducted GD, in every group there was 20 students, and in the GD they just given the topics on the current affairs ,like- Global warming, Science is a curse or boon, girls are superior than boys?, etc. Then after half an hour the result of GD was announced , and fortunetly I was selected among the 150 other students. Then there was a written round, that was fully Technical , the question paper consists of total 50 questions out which 45 are optional and the rest of the 5 questions are not optional. Some of them which I remember are- 1.when we pass an argument to a function , then how it is being interpreted? Ans- Address of the first element of an array. 2.how the size of structure can be determined? 3.Complexity of binary search algorithm? Ans-0(logn) 4.what does the symbol << do in c++? 5.what does (.) dot operator do? 6.what is RTTI? 7.What is containership? And many more questions related to data structure on complexity, C program output, etc Then the result was declared on the next day, total 45 students are short leasted out of 150(approx) and the further rounds of Technical and HR are after two days. Then on 28th of Feb 2011 we are called for the next rounds, and that was the toughest time ever as my turn came almost at last , firstly my name was announced for the Technical round, there when I entered there are 3 persons inside the room who are taking the interview, as I entered they asked me to reduce the speed of the fan, I went to the switch board but the regulator was not working , then they told me to switch it off. Then , they offerd me to have a seat, there they asked me about- 1. what is your area of interest? 2. what is recursion? 3. write a program of factorial using recursion. 4. differentiate between My sql and Sql server. 5. they asked me questions related to my minor project. 6. what does get and post method do? 7. what is structure? 8. what is union? Out of which I have given answers of the many of them. Then I was called for the PI (personnmal interview) , I was very tired as it was 6:30 and I was waiting for my turn from 11’o clock onwards. But as I was very much exited , I just prayed to God and entered in the room, As I entered I saw two persons there inside the room I wished both of them, and they offerd me the chair, I replied with thank you sir thank you mam. Then the first question which I was asked there is- 1.Tell me something about yourself? Then, 2.they asked me of my strengths. 3.then suddenly they started asking aptitude questions, and the main thing is that they are not repeating the questions, you have to listen it very carefully. And the questions are like— Que- a man moves 50 km away from his house in the north direction, then he turns left and moves 50 km , and then again he turns left and moves 50 km, then at which place he is from his house and at what distance? Que- the ratio of the age of the two friends are in the ratio 6:5 then there ratio becomes 8:7 , so how many years they will it takes to gain this ratio? 4.where do you see yourself after 5 years? 5.tell me your 5 such skills which you can give to our organization. 6.what do you know about our company? They both are very calm and are of very good nature, and they are very supportive which helped me a lott . And just after half an hour the results had been declared and fortunetly with God’s Grace I got selected, that was the one of the very most imported and cherishable moment of my life. All The Best to all my dear friends , and I wish you for your bright future. And , at last but not the least, I would like to thanks to Consagous Technologies to give me such a big opportunity to prove myself in my life, thank you so much.
SRUCTURE PROGRAMMING
Is c a great language, or what?
Which programming language is best for getting job 2020?
how to solve "unable to open stdio.h and conio.h header files in windows 7 by using Dos-box software
What are the uses of pre-processor directives?