C Programming - Input / Output
#include<stdio.h>
int main()
{
FILE *fp1, *fp2;
fp1=fopen("file.c", "w");
fp2=fopen("file.c", "w");
fputc('A', fp1);
fputc('B', fp2);
fclose(fp1);
fclose(fp2);
return 0;
}
Here fputc('A', fp1); stores 'A' in the file1.c then fputc('B', fp2); overwrites the contents of the file1.c with value 'B'. Because the fp1 and fp2 opens the file1.c in write mode.
Hence the file1.c contents is 'B'.
#include<stdio.h>
int main()
{
int k=1;
printf("%d == 1 is" "%s\n", k, k==1?"TRUE":"FALSE");
return 0;
}
Step 1: int k=1; The variable k is declared as an integer type and initialized to '1'.
Step 2: printf("%d == 1 is" "%s\n", k, k==1?"TRUE":"FALSE"); becomes
=> k==1?"TRUE":"FALSE"
=> 1==1?"TRUE":"FALSE"
=> "TRUE"
Therefore the output of the program is 1 == 1 is TRUE
#include<stdio.h>
char *str = "char *str = %c%s%c; main(){ printf(str, 34, str, 34);}";
int main()
{
printf(str, 34, str, 34);
return 0;
}
#include<stdio.h>
int main()
{
FILE *fs, *ft;
char c[10];
fs = fopen("source.txt", "r");
c[0] = getc(fs);
fseek(fs, 0, SEEK_END);
fseek(fs, -3L, SEEK_CUR);
fgets(c, 5, fs);
puts(c);
return 0;
}
The file source.txt contains "Be my friend".
fseek(fs, 0, SEEK_END); moves the file pointer to the end of the file.
fseek(fs, -3L, SEEK_CUR); moves the file pointer backward by 3 characters.
fgets(c, 5, fs); read the file from the current position of the file pointer.
Hence, it contains the last 3 characters of "Be my friend".
Therefore, it prints "end".
#include<stdio.h>
int main()
{
float a=3.15529;
printf("%2.1f\n", a);
return 0;
}
float a=3.15529; The variable a is declared as an float data type and initialized to value 3.15529;
printf("%2.1f\n", a); The precision specifier tells .1f tells the printf function to place only one number after the .(dot).
Hence the output is 3.2