/* Try different input methods along with different permitted file */ /* actions. Lots of unexpected results! */ #include #include #include #include #include #include main(argc,argv) int argc; char *argv[]; {int fd,n; FILE *fp; if (argc<2) { printf("Specify the file!!!\n"); exit(1); } printf("fdopen using r\n"); fd=open(argv[1],O_RDONLY); printf("READ ONLY\n"); fp=fdopen(fd,"r"); fscanf(fp,"%i",&n); printf("fscanf(ed) %d\n",n); fseek(fp,0,SEEK_SET); fread(&n,sizeof(int),1,fp); printf("fread(ed) %d\n",n); lseek(fd,0,SEEK_SET); read(fd,&n,sizeof(int)); printf("read(ed) %d\n",n); fclose(fp); fd=open(argv[1],O_RDWR); printf("READ WRITE\n"); fp=fdopen(fd,"r"); fscanf(fp,"%i",&n); printf("fscanf(ed) %d\n",n); fseek(fp,0,SEEK_SET); fread(&n,sizeof(int),1,fp); printf("fread(ed) %d\n",n); lseek(fd,0,SEEK_SET); read(fd,&n,sizeof(int)); printf("read(ed) %d\n",n); fclose(fp); printf("fdopen using w\n"); fd=open(argv[1],O_RDONLY); printf("READ ONLY\n"); fp=fdopen(fd,"w"); fscanf(fp,"%i",&n); printf("fscanf(ed) %d\n",n); fseek(fp,0,SEEK_SET); fread(&n,sizeof(int),1,fp); printf("fread(ed) %d\n",n); lseek(fd,0,SEEK_SET); read(fd,&n,sizeof(int)); printf("read(ed) %d\n",n); fclose(fp); fd=open(argv[1],O_RDWR); printf("READ WRITE\n"); fp=fdopen(fd,"w"); fscanf(fp,"%i",&n); printf("fscanf(ed) %d\n",n); fseek(fp,0,SEEK_SET); fread(&n,sizeof(int),1,fp); printf("fread(ed) %d\n",n); lseek(fd,0,SEEK_SET); read(fd,&n,sizeof(int)); printf("read(ed) %d\n",n); fclose(fp); }