Predict Program Output Based on C String
Output of following C Programs are not very simple. These are simple but very interesting top c programs based on C Strings asked during viva and interviews.
Program-1
#include<stdio.h>
int main()
{
    char str[] = "%d";
    str[1] = 'c';
    printf(str, 97);
    return 0;
}
Output: a
Justification:
-> Statement char str[] = "%d" will initialize str[] to "%d".
-> str[1] = 'c'; assigns 'c' to str[1] which replaces "%d" with "%c".
-> printf() function prints character of ASCII value 97; hence final output is a.
 
Program-2
#include<stdio.h>
int main()
{
    printf("C Program Practicals", "C Programming", "ICP");
    return 0;
}
Output: C Program Practicals
Justification: Comma operator has Left to Right associativity; printf() starts printing with first double quote and ends at second double quote hence final output is C Program Practicals.
Program-3
#include<stdio.h>
int main()
{
    char *names[] = { "AAA", "BBB", "CCC"};
    int i;
    char *temp;
   
    temp = names[0];
    names[0] = names[1];
    names[1] = temp;
   
    for(i=0; i<=2; i++)
        printf("%s ", names[i]);
    return 0;
}
Output: BBB AAA CCC
Justification: Array names[] will be initialized with AAA BBB CCC. Then using temp variable, first and second array elements are inter-changed; resulting in final output as BBB AAA CCC.
Program-4
#include<stdio.h>
#include<string.h>
int main()
{
    char name[] = "Gujarat\0India\0";
    printf("%d", strlen(name));
    return 0;
}
Output: 7
Justification: String initialization terminates are first ' \0 '; hence name[] contains only "Gujarat"; strlen(name) function return 7 which is finally printed.