Interesting C Programing Problems (Level- Intermediate to Advance)
The following C program segfaults of IA-64,
but works fine on IA-32.
1 int main()
2 {
3 int* p;
4 p = (int*)malloc(sizeof(int));
5 *p = 10;
6 return 0;
7 }
Why does it happen so?
The expected output of the following C program
is to print the elements in the array. But when
actually run, it doesn't do so.
1 #include<stdio.h>
2
3 #define TOTAL_ELEMENTS (sizeof(array) / sizeof(array[0]))
4 int array[] = {23,34,12,17,204,99,16};
5
6 int main()
7 {
8 int d;
9
10 for(d=-1;d <= (TOTAL_ELEMENTS-2);d++)
11 printf("%d\n",array[d+1]);
12
13 return 0;
14 }
Find out what's going wrong.
The following program doesn't "seem" to print "hello-out".
(Try executing it)
1 #include <stdio.h>
2 #include <unistd.h>
3 int main()
4 {
5 while(1)
6 {
7 fprintf(stdout,"hello-out");
8 fprintf(stderr,"hello-err");
9 sleep(1);
10 }
11 return 0;
12 }
What could be the reason?
1 #include <stdio.h>
2 #define f(a,b) a##b
3 #define g(a) #a
4 #define h(a) g(a)
5
6 int main()
7 {
8 printf("%s\n",h(f(1,2)));
9 printf("%s\n",g(f(1,2)));
10 return 0;
11 }
Just by looking at the program one "might" expect the output to be, the
same for both the printf statements.
But on running the program you get it as: