- 积分
- 6
- 实力分
- 点
- 金钱数
- 两
- 技术分
- 分
- 贡献分
- 分
|
发表于 2009-4-20 21:52:22
|
显示全部楼层
本帖最后由 czy0818 于 2009-4-20 22:02 编辑
写了个小程序,不知道能不能帮忙。
命令行下输入sort_py.exe in.txt out.txt
in.txt内容为待排序的一个音节的一行,比如对“hei”,in.txt文件内容为:
黑嘿潶黒嬒
然后再手工输入排序,最后输出到out.txt
输入0退出,
排到差不多的时候可以输入-1来flush,也就是把剩下的字按序输出。
源码:
#include <stdio.h>
#define BUF_LEN 4096
#define WORD_LEN 3
int main(int argc,char* argv[]) {
FILE* fp_in;
FILE* fp_out;
char buf[BUF_LEN];
char tmp[WORD_LEN];
int len;
int n;
int i;
if(argc != 3) {
printf("missing argument\n");
exit(1);
}
if((fp_in = fopen(argv[1],"r")) == NULL) {
printf("open %s failed\n",argv[1]);
exit(1);
}
if((fp_out = fopen(argv[2],"w")) == NULL) {
printf("open %s failed\n",argv[2]);
exit(1);
}
if(fgets(buf,BUF_LEN,fp_in) == NULL)
exit(1);
len = strlen(buf)/2;
while(1) {
for(i = 0; i < len; ++i) {
tmp[0] = buf[i*2];
tmp[1] = buf[i*2+1];
tmp[2] = 0;
printf("%03d-%s",(i+1),tmp);
if((i+1)%8 == 0)
printf("\n");
else
printf(" ");
}
printf("\ninput a number,(enter 0 to exit,-1 to flush):");
scanf("%d",&n);
if(n == 0)
break;
else if(n == -1) {
for(i = 0; i < len; ++i) {
if(buf[i*2] != ' ') {
tmp[0] = buf[i*2];
tmp[1] = buf[i*2+1];
tmp[2] = 0;
fprintf(fp_out,"%s",tmp);
}
}
break;
}
else {
tmp[0] = buf[(n-1)*2];
tmp[1] = buf[(n-1)*2+1];
tmp[2] = 0;
fprintf(fp_out,"%s",tmp);
buf[2*(n-1)] = ' ';
buf[2*(n-1)+1] = ' ';
}
}
fclose(fp_in);
fclose(fp_out);
} |
|