Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

coding in c: not sure what sequential tape reading is or how to do it. Please ru

ID: 3809298 • Letter: C

Question

coding in c: not sure what sequential tape reading is or how to do it.

Please run the following program. Use sequential tape reading analogy, please draw sequntial tape values and current head positions on the tape to explain the results of print-out.

printf("(%d %d), ", sizeof(rec_t), sizeof(my.x)); //______________ fclose(fp);

fp=fopen("test.bin", "rb");
c = 3; fseek(fp, sizeof(rec_t)*c, SEEK_SET);
fread(&my, sizeof(rec_t), 1, fp);
printf("(%d %c), ", my.x, my.v); //_______________________________

c = 2; fseek(fp, sizeof(rec_t)*c, SEEK_CUR);
fread(&my, sizeof(rec_t), 1, fp);
printf("(%d %c), ", my.x, my.v); //_______________________________

c = -1; fseek(fp, sizeof(rec_t)*c, SEEK_END);
fread(&my, sizeof(rec_t), 1, fp);
printf("(%d %c), ", my.x, my.v); //_______________________________

rewind(fp);
fread(&my, sizeof(rec_t), 1, fp);
printf("(%d %c), ", my.x, my.v); //_______________________________

fclose(fp);

return 0; }

Explanation / Answer

In the above C language program the header statement is missing and the error is as follows:

#include expects "FILENAME" or <FILENAME>

To rectify this error code need to do some modifications . The finalized code and output is as follows:

#include <stdio.h>
typedef struct {int x; char v;} rec_t;
int main() {
int c;
FILE *fp;
rec_t my;
fp=fopen("test.bin","wb");
for ( c=1; c <= 10; c++) {
my.x= c; my.v= c+64;
fwrite(&my, sizeof(rec_t), 1, fp);
}
printf("(%d %d), ", sizeof(rec_t), sizeof(my.x)); //______________ fclose(fp);
fp=fopen("test.bin", "rb");
c = 3; fseek(fp, sizeof(rec_t)*c, SEEK_SET);
fread(&my, sizeof(rec_t), 1, fp);
printf("(%d %c), ", my.x, my.v); //_______________________________
c = 2; fseek(fp, sizeof(rec_t)*c, SEEK_CUR);
fread(&my, sizeof(rec_t), 1, fp);
printf("(%d %c), ", my.x, my.v); //_______________________________
c = -1; fseek(fp, sizeof(rec_t)*c, SEEK_END);
fread(&my, sizeof(rec_t), 1, fp);
printf("(%d %c), ", my.x, my.v); //_______________________________
rewind(fp);
fread(&my, sizeof(rec_t), 1, fp);
printf("(%d %c), ", my.x, my.v); //_______________________________
fclose(fp);
return 0; }

Output:

(8 4), (10 J), (10 J), (10 J), (10 J),