Just a couple of questions that don't seem to be already answered in the forum. 1. When the Generate text file with random numbers get piped into find.c how does it know which command line function to place the text into? For example, I tried to test to see if I could pipe text into the main (argc) command line, but it didn't work. My guess it that it just automatically find the 2nd command line argument, (the first non main function which is the GetInt on line 43) and then keeps inputing an integer until all the generate integers are used up. 2. On a similar note how does the program know to stop after say 1000 numbers have been generated? Based on the code it should stop looping once MAX number has been reach. Manually we had to click on Control D to stop the program. Even when more than MAX numbers are generated in Generate.c for example ./generate 65537 the program still seems works. 3. talking about control D. I don't seem to be able to get out of the haystack loop when I use the gdb debugger. My debugging commands are, gdb ./find break main run 10 next and I then eventually get stuck in the haystack loop, with no way to exit before the 65536 iteration except Control D which exits GDB completely! (gdb) run 23 Starting program: /home/jharvard/Dropbox/pset3/find/find 23 Breakpoint 1, main (argc=2, argv=0xbffff0b4) at find.c:27 27 if (argc != 2) (gdb) next 34 int needle = atoi(argv[1]); (gdb) 4. Lastly what is the rationale for the header files in header.c? For example there is cs50.h but not stdio.h even though the functions are all stdio. And why include header.h, when the functions are written there in the file. Thank you for your help!