您的位置:首页 > 其它

将一个文本文件内容反序打印出来(包含中文时)

2009-04-29 09:03 323 查看
原贴:http://topic.csdn.net/u/20090428/16/29e6157d-df3c-4762-9b3d-230b205b0828.html

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
#include <assert.h>
#include <errno.h>
char* read_file(char*filename);
char* text_reverse(const char* textptr);
int main()
{
char* str=read_file("text.txt");     /* text.txt是当前目录下的文件,内容有中文英文 */
char* ptr=text_reverse(str);
printf("%s/n",ptr);

return 0;
}
char* read_file(char*filename)
{
FILE* fp;
long len;
char* buf;
if((fp=fopen(filename,"rb")) == NULL)
{
perror("fail to open file!");
exit(1);
}
fseek(fp,0,SEEK_END);
len=ftell(fp);
rewind(fp);
buf=(char*)malloc(len*sizeof(char)+1);
fread(buf,len,1,fp);
*(buf+len)='/0';
fclose(fp);
return buf;
}
char* text_reverse(const char* textptr)
{
static char* revptr;
char* ptr1;
char* ptr2;
int textlen;

textlen=strlen(textptr);
ptr2=(char*)malloc(textlen*sizeof(char)+1);
assert(ptr2!=NULL);
ptr1=(char*)(textptr+textlen-1);
revptr=ptr2;

while(textlen--)
{
if(*ptr1 < (unsigned )128)
*ptr2=*ptr1;
else
{
*ptr2=*(ptr1-1);
ptr2++;
*ptr2=*ptr1;
ptr1--;
}
ptr2++;
ptr1--;
}
*ptr2='/0';
return revptr;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐