C Input and Output
Question 1 |
#include "stdio.h" int main() { char arr[100]; printf("%d", scanf("%s", arr)); /* Suppose that input value given for above scanf is "GeeksQuiz" */ return 1; }
9 | |
1 | |
10 | |
100 |
Discuss it
Question 2 |
Predict output of the following program
C
#include <stdio.h> int main() { printf("new_c_questionbr"); printf("geeksforgeeks"); getchar(); return 0; }
ew_c_question | |
new_c_ques | |
| |
Depends on terminal configuration |
Discuss it
Question 3 |
#include <stdio.h> int main() { printf(" "GEEKS %% FOR %% GEEKS""); getchar(); return 0; }
“GEEKS % FOR % GEEKS” | |
GEEKS % FOR % GEEKS | |
\"GEEKS %% FOR %% GEEKS\" | |
GEEKS %% FOR %% GEEKS |
Discuss it
Question 4 |
C
#include <stdio.h> // Assume base address of "GeeksQuiz" to be 1000 int main() { printf(5 + "GeeksQuiz"); return 0; }
GeeksQuiz | |
Quiz | |
1005 | |
Compile-time error |
Discuss it
printf is a library function defined under stdio.h header file. The compiler adds 5 to the base address of the string through the expression 5 + "GeeksQuiz" . Then the string "Quiz" gets passed to the standard library function as an argument.
Question 5 |
Predict the output of the below program:
C
#include <stdio.h> int main() { printf("%c ", 5["GeeksQuiz"]); return 0; }
Compile-time error | |
Runtime error | |
Q | |
s |
Discuss it
The crux of the program lies in the expression: 5["GeeksQuiz"] This expression is broken down by the compiler as: *(5 + "GeeksQuiz"). Adding 5 to the base address of the string increments the pointer(lets say a pointer was pointing to the start(G) of the string initially) to point to Q. Applying value-of operator gives the character at the location pointed to by the pointer i.e. Q.
Question 6 |
#include <stdio.h> int main() { printf("%c ", "GeeksQuiz"[5]); return 0; }
Compile-time error | |
Runtime error | |
Q | |
s |
Discuss it
Question 7 |
When an object of the class is returned by value. | |
When an object of the class is passed (to a function) by value as an argument. | |
When an object is constructed based on another object of the same class | |
When compiler generates a temporary object. | |
All of the above |
Discuss it
Question 8 |
gets() can read a string with newline characters but a normal scanf() with %s can not. | |
gets() can read a string with spaces but a normal scanf() with %s can not. | |
gets() can always replace scanf() without any additional code. | |
None of the above |
Discuss it
Question 9 |
Which of the following is true
gets() doesn't do any array bound testing and should not be used. | |
fgets() should be used in place of gets() only for files, otherwise gets() is fine | |
gets() cannot read strings with spaces | |
None of the above |
Discuss it
Use of gets() generates the risk of an overflow of the allocated buffer. This happens because the function gets(), doesn't know the size of the buffer, and continues reading until it finds a newline "\n" or encounters EOF, and so it may overflow the bounds of the buffer it was given.
See gets() is risky to use!
Question 10 |
What does the following C statement mean?
C
scanf("%4s", str);
Read exactly 4 characters from console. | |
Read maximum 4 characters from console. | |
Read a string str in multiples of 4 | |
Nothing |
Discuss it
Try following program, enter GeeksQuiz, the output would be "Geek"
#include <stdio.h> int main() { char str[50] = {0}; scanf("%4s", str); printf(str); getchar(); return 0; }