变位词实现 编程珠玑一处错误
2012-03-01 15:39
239 查看
书中只实现了单词内部的排序而求得标记词,而并未实现单词之间的排序,所以运行结果按不符合作者预期结果,可能是作者的一个疏忽。
完善后代码如下:
运行过程及结果:
完善后代码如下:
#include <stdio.h> #include <string.h> #define WORD_MAX_LENGTH 100 #define DICT_NUM 100 char word[DICT_NUM][WORD_MAX_LENGTH], word_sign[DICT_NUM][WORD_MAX_LENGTH], old_word_sign[WORD_MAX_LENGTH]; int count = 0; int char_cmp(char *x, char *y) { return *x - *y; } int str_compare(char *x, char *y ) { return strcmp(x,y); } int sign_and_sort(char *input_file_name, char *output_file_name) { FILE *fp_input, *fp_output; int i = 0; if ((fp_input = fopen(input_file_name, "r")) == NULL || (fp_output = fopen(output_file_name, "w")) == NULL) { printf("cannot access the file!"); exit(0); } while (fscanf(fp_input, "%s", word[count]) != EOF) { strcpy(word_sign[count], word[count]); qsort(word_sign[count], strlen(word_sign[count]),sizeof(char), char_cmp); strcat(word_sign[count], ": "); strcat(word_sign[count], word[count]); count++; } qsort(word_sign, count,sizeof(word_sign[count]), str_compare); for (i = 0;i < count; i++) fprintf(fp_output,"%s\n", word_sign[i]); fclose(fp_input); fclose(fp_output); return 0; } int squash(char *input_file_name, char *output_file_name) { FILE *fp_input, *fp_output; int linenumber = 0; count = 0; strcpy(old_word_sign, ""); if ((fp_input = fopen(input_file_name, "r")) == NULL || (fp_output = fopen(output_file_name, "w")) == NULL) { printf("cannot access the file!"); exit(0); } while (fscanf(fp_input, "%s %s", word_sign[count], word[count]) != EOF) { if (strcmp(old_word_sign, word_sign[count]) != 0 && linenumber > 0) fprintf(fp_output, "\n"); strcpy(old_word_sign, word_sign[count]); linenumber++; fprintf(fp_output, "%s ", word[count++]); } fclose(fp_input); fclose(fp_output); return 0; } int main() { sign_and_sort("dict.txt", "mid.txt"); squash("mid.txt", "result.txt"); return 0; }
运行过程及结果:
相关文章推荐
- 变位词实现 编程珠玑一处错误
- 编程珠玑:变位词程序的实现
- 编程珠玑:变位词程序的实现
- 转:C++模板定义和实现分离导致的编译错误
- Windows 2003中轻松实现红外线通信支持正文分析错误
- 解决VM安装VMTools后错误提示,实现文件共享
- ewebeditor飞鱼修改版在linux下运行错误解决办法(已实现)
- HeadFirst 命令模式 风扇撤回课本实现错误代码及利用栈的解决办法
- python 实现冒泡排序与快速排序 遇到的错误与问题
- 实现时出现以下错误:ERROR:ChipScope: One or more invalid signal connections detected.
- java实现字符串反转(原作有点错误,需要看下评论)
- 错误是:未能找到回调的目标“__Page”或未实现 ICallbackEventHandler
- 实现Nginx中使用PHP-FPM时记录PHP错误日志的配置方法
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(15)-用户登录详细错误和权限数据库模型设计
- 错误1729未知的生成错误“此实现不是 Windows 平台 FIPS 验证的加密算法的一部分。 行 52 位置
- ulua lua中的时间戳实现中出现的数值类型问题,long错误不能识别的解决方案
- 简洁常用权限系统的设计与实现(七):一种错误的不可行的构造树的方法
- WordPress评论列表一处翻译错误
- blink的一处断言错误
- python 3.0 模拟用户登录功能并实现三次错误锁定