I think the code should be the best annotation. The implementation is as follows:
/*************************************** * *********************************> File Name: trim_space.c> author: krischou> mail: [email protected]> created time: sun 24 Aug 2014 10:03:33 am CST ********************************* ***************************************/ # include <stdio. h> # include <stdlib. h> # include <string. h> # define n 128 static int my_isspace (char c) {If (C = ''| C = '\ n' | C = '\ T' | C = '\ V') return 1; else return 0;} static void trim_space (char * Line) {int pre, work_index; Pre =-1; work_index = 0; while (line [work_index]! = '\ 0') {If (! My_isspace (line [work_index]) {line [++ pre] = line [work_index ++];} else if (pre! =-1 &&! My_isspace (line [pre]) {line [++ pre] = line [work_index ++];} else {work_index ++ ;}} line [++ pre] = '\ 0';} int main (INT argc, char * argv []) {char line [N]; memset (line, 0, n); While (fflush (stdin), gets (line )! = NULL) {trim_space (line); puts (line);} return 0;}/* the question about input and output is further emphasized here. Gets does not store '\ n ', replace the last '\ N' with' \ 0' for storage. * Puts converts '\ 0' to' \ n' output. * Gets is an insecure function and is output until '\ 0' is encountered. * Fgets stores '\ n'. When fputs are output,' \ 0' is not changed to '\ n '*/
Removes extra spaces of words in a string.