题目很水,我想代码应该就是最好的注释,实现如下:
/************************************************************************* > 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; } /* 关于输入输出的问题此处再强调一次,gets不会存储‘\n’,并将最后一个‘\n’换成‘\0’存储。 * puts会将‘\0’变成‘\n’输出。 * gets是一个不安全函数,会输出直至遇到‘\0’为止。 * fgets会存储‘\n’,fputs输出时不会将‘\0’变成‘\n’ */
时间: 2024-11-14 22:00:43