runner% cat score.c /* Read scores to negative sentinal; find their average */ #include void main(void) { int score, sum = 0, count = 0; double ave; fscanf(stdin, "%i", &score); while (score >= 0) { count = count + 1; sum = sum + score; printf(" Score: %2i = %4i\n", count, score); fscanf(stdin, "%i", &score); } ave = (double) sum / (double) count; printf("Average of %i scores: %.2f\n", count, ave); } runner% cat score.data 90 100 80 -1 runner% lint -m -u score.c function returns value which is always ignored fscanf printf runner% cc -o score score.c runner% score 4 5 void main(void) 6 { 7 int score, sum = 0, count = 0; 8 double ave; 9 10 while (1) { /* produces a lint warning */ 11 fscanf(stdin, "%i", &score); 12 if (score < 0) break; 13 count = count + 1; 14 sum = sum + score; 15 printf(" Score: %2i = %4i\n", count, score); 16 } 17 ave = (double) sum / (double) count; 18 printf("Average of %i scores: %.2f\n", count, ave); 19 } runner% lint -m -u score2.c (10) warning: constant in conditional context function returns value which is always ignored fscanf printf runner% cat score_file.c /* Read scores to end-of-file; find their average */ #include #include void main(void) { FILE *infile; int score, sum = 0, count = 0; double ave; int file_status; infile = fopen("scores.text", "r"); if (infile == NULL) { printf("Couldn't open file\n"); exit(1); } file_status = fscanf(infile, "%i", &score); while (file_status != EOF) { count = count + 1; sum = sum + score; printf(" Score: %2i = %4i\n", count, score); file_status = fscanf(infile, "%i", &score); } ave = (double) sum / (double) count; } runner% cat scores.text 80 95 75 82 91 runner% score_file Score: 1 = 80 Score: 2 = 95 Score: 3 = 75 Score: 4 = 82 Score: 5 = 91 Average score: 84.60 runner% cat score_file2.c /* High-tech version, more like "real" C */ #include #include void main(void) { FILE *infile; int score, sum = 0, count = 0; char file_name[] = "scores.text"; if ((infile = fopen(file_name, "r")) == NULL) {; fprintf(stderr, "Couldn't open file: %s\n", file_name); exit(1); } while (fscanf(infile, "%i", &score) != EOF) { count++; sum += score; fprintf(stdout, " Score: %2i = %4i\n", count, score); } fprintf(stdout, "Average score: %.2f\n", (double) sum / (double) count); }