首页 > 代码库 > 将字符串中单词经排序后输出
将字符串中单词经排序后输出
思路
先将字符串中的单词分割保存至二维数组中,再经排序后输出。水题,直接上代码了。
代码
/************************************************************************* > File Name: words_sort.c > Author: KrisChou > Mail:zhoujx0219@163.com > Created Time: Sun 24 Aug 2014 08:41:42 PM CST ************************************************************************/#include <stdio.h>#include <stdlib.h>#include <string.h>#define N 128#define WORD_CNT 128#define WORD_LEN 256static int my_isspace(char c){ if(c == ‘ ‘|| c == ‘\n‘ || c == ‘\t‘ || c == ‘\v‘) return 1; else return 0;}static void word_show(char(*words)[WORD_LEN],int cnt){ int index; for(index = 0; index < cnt; index++) { printf("%-15s", words[index]); }}static void word_save(char *line, int bg, int end, char *dest){ int index,index_dest; for(index = bg,index_dest = 0; index <= end; index++,index_dest++) { dest[index_dest] = line[index]; } dest[index_dest] = ‘\0‘;}static int word_split(char *line, char(*words)[WORD_LEN]){ int bg,end; int word_cnt; bg = 0; word_cnt = 0; while(line[bg] != ‘\0‘) { while(my_isspace(line[bg])) { bg++; } if(line[bg] == ‘\0‘) { break; } end = bg; while(line[end] != ‘\0‘ && !my_isspace(line[end])) { end++; } word_save(line,bg,end-1,words[word_cnt++]); bg = end; } return word_cnt;}static void word_sort(char(*words)[WORD_LEN],int cnt){ int pos,index; char key[WORD_LEN]; memset(key,0,WORD_LEN); for(pos = 1; pos < cnt; pos++) { strcpy(key,words[pos]); for(index = pos - 1; index >= 0; index--) { if(strcmp(key,words[index]) < 0) { strcpy(words[index+1],words[index]); }else { break; } } strcpy(words[index+1],key); }}int main(int argc, char *argv[]){ char line[N]; char arr[WORD_CNT][WORD_LEN]; int word_cnt; while(fflush(stdin),gets(line) != NULL) { word_cnt = word_split(line,arr); word_show(arr,word_cnt); printf("\n"); word_sort(arr,word_cnt); word_show(arr,word_cnt); printf("\n"); } return 0;}
将字符串中单词经排序后输出
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。