Open In App

GATE | Quiz for Sudo GATE 2021 | Question 18

Last Updated : 15 Dec, 2020
Like Article
Like
Save
Share
Report

Consider the following C program :




#include <stdio.h>
#include <string.h>
  
struct s {
    int i;
    char *c;
} str[] = {100, "eclasses", 200, "geeks",300, "data",400,"structure",500,"students"};
  
int main()
    struct s *p = str;
    p += 1;
    printf("%s", p -> c);
    p--;
    printf("%s,", ++p -> c);
    printf(" %d, ", p[1].i);
    p=p+4;
    printf("%s", p -> c);


Which of the string(s) will be in the final output of the above C program ?

Note – This question is multiple select questions (MSQ).
(A) geeksclasses
(B) 100
(C) students
(D) 200


Answer: (A) (C) (D)

Explanation: Here structure is the data type contains integer type and string. Base address of strings,

eclasses=1000
geeks=2000
data=3000
structure=4000
students=5000 

p contains the base address of the str data type.

p=p+1 

means jump to index 0 to index 1 <200,2000>in array str.

First print statement, p->c points to the base address of the string and print statement print till null found in the string.

geeks

Second print statement
p– means back to index 0,
++p -> c means traverse the string one byte and print the remaining string

classes, 

Third print statement
p[1].i prints the integer stored at 1 index.

200, 

Fourth print statement
p=p+4 means go to index 4
p->c print string stored at index 4

students 

Therefore, options (A), (C), and (D) are correct.

Quiz of this Question
Please comment below if you find anything wrong in the above post


Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads