Okay, thank you for your comments; but, I didn't have any questions about my code. Three-fourths of that program are a direct copy from the example. What little I changed of it; well, most of those changes are a mimicking of the other parts of the example.
Points number 1 to 5 on your response are pretty much covered by the printout of the example code in K&R's C.
This stuff you're telling me not to do: it's done, right here in the example, by the people who put this book together. I'm going to stick with their way for now. I'm not an expert, but my annotated copy of K&R is falling apart at the bindings. The program compiles and works; it's an answer to a chapter 1 problem.
For point 6, the function reverse strips the newline because I used a frequently re-used function "getline" which adds one in. The only time the newline needs to come out of the string for that program is when the string is printed reversed. That getline function is used dozens of times throughout the book and the exercises; I just re-use it, as is. So, I tailored the reverse function to fit the answer to the problem. This helps support a copy/paste of the function, later.
One of the unwritten lessons of this book is that in order to get some of the later examples to work, you have to add this function in; its full text is not always provided in later examples. It comes up a lot. It's pretty noticeable in this book. I haven't counted, but if it was used 50 times in here, I wouldn't be surprised. I feel more comfortable with it the way it is.
Thanks for your feedback.