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),
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.