ExamVeda
Login
Home
This question belongs to C Program C Miscellaneous
C Miscellaneous
?

Determine Output:
void main()
{
      char *p="hi friends", *p1;
      p1=p;
      while(*p!='\0') ++*p++;
      printf("%s", p1);
}

Answer & Solution
Correct Answer: Option B

++*p++ will be parse in the given order :
1. *p that is value at the location currently pointed by p will be taken
2. ++*p the retrieved value will be incremented
3. when ; is encountered the location will be incremented that is p++ will be executed.

Examveda
Question posted by Examveda
Community

Join the Discussion

5 Comments
Yousef Walid
Yousef Walid 2 years ago
The question should be
void main()
{
char p[]="hi friends", *p1;
p1=p;
while(*p1!='') ++*p1++;
printf("%s",p);
}
for the answer to be correct
WG KIM
WG KIM 7 years ago
The question should be modified as
{
char p[20] = "hi friends", * p1;
p1 = p;
while (*p1 != '') ++*p1++;
printf("%sn", p);
}
Abdelbadie Belmouhcine
Abdelbadie Belmouhcine 9 years ago
Hello,
This code must provide a runtime error because p is pointed to a literal string, which is unmodifiable.
Thanks.
Abhishek Singh
Abhishek Singh 9 years ago
Give full ans in brief !please.
Gurpreet Gandhi
Gurpreet Gandhi 9 years ago
P1 pointer is not effected by the moment of p1(they are copy of the same string hi friends) hence the answer should be hi friends , isn't it ??