我写的一段小程序

Maxview 2005-09-06 04:24:28
写了短小程序,用来将文件中的汉子提取出来,给同事看了,说我写东西太晦涩,贴出来大家讨论一下:

#include "stdafx.h"
#include <malloc.h>
#include <string.h>
#define sec1 (c=buffer[i])&&(c>0x80&&c<0xA1||c>0xA9&&c<0xFF)
#define sec2 (c=buffer[i])&&(c>0xA0&&c<0xAA)

void Convert2PureChinese(unsigned char* buffer)
{
unsigned char c;
for(int i=0;i<(int)strlen((char*)buffer);)
if(sec1)
{
printf("%c%c", buffer[i], buffer[i+1]);
i+=2;
}
else if(sec2)
i+=2;
else
i++;
}

void getFileBuffer(FILE* fp)
{
if(fp==NULL)
return;
fseek(fp, 0L, SEEK_END);
long len=ftell(fp);
rewind(fp);
unsigned char* buffer=(unsigned char*)malloc(len);
fread(buffer, len, 1, fp);
fclose(fp);
Convert2PureChinese(buffer);
free(buffer);
}

int main(int argc, char* argv[])
{
getFileBuffer(fopen("test.txt", "r+b"));
return 0;
}
...全文
255 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xk198602 2005-09-07
  • 打赏
  • 举报
回复
#define sec1 (c=buffer[i])&&(c>0x80&&c<0xA1||c>0xA9&&c<0xFF)
#define sec2 (c=buffer[i])&&(c>0xA0&&c<0xAA)

上面两个宏,执行顺序对结果会有影响吧,应该避免这样
qfeng_zhao 2005-09-07
  • 打赏
  • 举报
回复
不错,加油!!
碼上道 2005-09-07
  • 打赏
  • 举报
回复
楼主,不错!UP
JOHE2003 2005-09-06
  • 打赏
  • 举报
回复
我感觉你写的程序还可以,并且很工整,但在这里给你提一个小建议,在写程序的时候用到逻辑运算符的时候,应该if(fp == NULL)这样,更能提高程序的可读性..........
掐死温柔 2005-09-06
  • 打赏
  • 举报
回复
学习

代码风格是否要改一下?!
Maxview 2005-09-06
  • 打赏
  • 举报
回复
我的qq是64696092,希望认识更多的朋友,希望与大家更频繁的交流。
longy51660 2005-09-06
  • 打赏
  • 举报
回复
学习学习
junguo 2005-09-06
  • 打赏
  • 举报
回复
还好!很多人写程序不知道有函数,都是一条线下来的,那样的代码才叫晦涩。
不过,你的函数名是getFileBuffer,但事实上并没有得到buffer。还有你的Convert2PureChinese(buffer);位置好像也并不合适。
zhouhuahai 2005-09-06
  • 打赏
  • 举报
回复
可能他觉得还可以再简化?或者是你的代码风格的问题?
不过对于if(fp==NULL)
我一般是写成: if(fp == NULL)
zhouhuahai 2005-09-06
  • 打赏
  • 举报
回复
说你写东西太晦涩?

偶觉得还好,只花五分钟就看懂了.
snowbirdfly 2005-09-06
  • 打赏
  • 举报
回复
不错啊~
学习~~~

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧