C Programming Questions and Answers
How many bytes of memory will the following code reserve?
#include < stdio . h >#include < stdlib . h >int main()
{
int *p;
p = (int *)malloc(256 * 256);
if(p == NULL)
printf("Allocation failed");
return0;
}
Option B
Explanation :Hence 256*256 = 65536 is passed to malloc() function which can allocate upto 65535. So the memory allocation will be failed in 16 bit platform (Turbo C in DOS).
If you compile the same program in 32 bit platform like Linux (GCC Compiler) it may allocate the required memory.
Point out the error in the following program.
#include#include < stdlib . h >int main()
{
int *a[3];
a = (int*) malloc ( sizeof (int) *3);
free(a);
return0;
}
Option B
Explanation :We should store the address in a[i]
Point out the error in the following program.
#include#include < stdlib . h >int main()
{
char *ptr;
*ptr = (char)malloc(30);
strcpy(ptr, "RAM");
printf("%s", ptr);
free(ptr);
return0;
}
Option B
Explanation :ptr = (char*)malloc(30);
How will you free the memory allocated by the following program?
#include#include#define MAXROW 3#define MAXCOL 4int main()
{
int **p, i, j;
p = (int **) malloc(MAXROW * sizeof(int*));
return0;
}
Answer:Option D
What will the function rewind() do?
Option D
Explanation :rewind() takes the file pointer to the beginning of the file. so that the next I/O operation will take place at the beginning of the file.
Example: rewind(FilePointer);
What will the function rewind() do?
Option D
Explanation :rewind() takes the file pointer to the beginning of the file. so that the next I/O operation will take place at the beginning of the file.
Example: rewind(FilePointer);
What will be the output of the program?
#include < stdio . h >#includeint main()
{
float i = 2.5;
printf("%f, %d", floor(i), ceil(i));
return0;
}
Answer :
Option C
Explanation :
Both ceil() and floor() return the integer found as a double.
floor(2.5) returns the largest integral value(round down) that is not greater than 2.5. So output is 2.000000.
ceil(2.5) returns 3, while converting the double to int it returns '0'.
So, the output is '2.000000,
What will be the output of the program?
#include < stdio . h >int main()
{
int i;
i = scanf("%d %d", &i, &i);
printf("%d\n", i);
return0;
}
Option B
Explanation :scanf() returns the number of variables to which you are provding the input.
i = scanf("%d %d", &i, &i); Here Scanf() returns 2. So i = 2.
printf("%d\n", i); Here it prints 2.
What will be the output of the program?
#include < stdio . h >int main()
{
int i;
char c;
for(i=1; i <= 5; i++)
{
scanf("%c", &c); /* given input is 'b' */
ungetc(c, stdout);
printf("%c", c);
ungetc(c, stdin);
}
return0;
}
Option C
Explanation :The ungetc() function pushes the character c back onto the named input stream, which must be open for reading.
This character will be returned on the next call to getc or fread for that stream.
One character can be pushed back in all situations.
A second call to ungetc without a call to getc will force the previous character to be forgotten.
What will be the output of the program?
#include < stdio . h >#includeint main()
{
char *i = "55.555";
int result1 = 10;
float result2 = 11.111;
result1 = result1+atoi(i);
result2 = result2+atof(i);
printf("%d, %f", result1, result2);
return0;
}
Option C
Explanation :Function atoi() converts the string to integer.
Function atof() converts the string to float.
result1 = result1+atoi(i);
Here result1 = 10 + atoi(55.555);
result1 = 10 + 55;
result1 = 65;
result2 = result2+atof(i);
Here result2 = 11.111 + atof(55.555);
result2 = 11.111 + 55.555000;
result2 = 66.666000;
So the output is "65, 66.666000" .