#include<stdio.h> int main() { FILE *fp; unsigned char ch; /* file 'abc.c' contains "This is CuriousTab " */ fp=fopen("abc.c", "r"); if(fp == NULL) { printf("Unable to open file"); exit(1); } while((ch=getc(fp)) != EOF) printf("%c", ch); fclose(fp); printf("\n", ch); return 0; }
while((ch=getc(fp)) != EOF) Here getc function read the character and convert it to an integer value and store it in the variable ch, but it is declared as an unsigned char. So the while loop runs infinitely.
#include<stdio.h> int main() { int i; printf("%d\n", scanf("%d", &i)); return 0; }
printf("%d\n", scanf("%d", &i)); The scanf function returns the value 1(one).
Therefore, the output of the program is '1'.
#include<stdio.h> int main() { FILE *fp; char ch, str[7]; fp=fopen("try.c", "r"); /* file 'try.c' contains "This is Nagpur" */ fseek(fp, 9L, SEEK_CUR); fgets(str, 5, fp); puts(str); return 0; }
#include<stdio.h> int main() { int a=250; printf("%1d\n", a); return 0; }
printf("%1d\n", a); It prints the value of variable a.
Hence the output of the program is 250.
#include<stdio.h> int main() { float a=3.15529; printf("%2.1f\n", a); return 0; }
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
#include<stdio.h> int main() { FILE *ptr; char i; ptr = fopen("myfile.c", "r"); while((i=fgetc(ptr))!=NULL) printf("%c", i); return 0; }
#include<stdio.h> int main() { printf("%c\n", ~('C'*-1)); return 0; }
#include<stdio.h> int main() { char *p; p="%d\n"; p++; p++; printf(p-2, 23); 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; }
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> 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() { printf("%%%%\n"); return 0; }
Comments
There are no comments.Copyright ©CuriousTab. All rights reserved.