首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

字符数组逆序,该怎么处理

2012-03-22 
字符数组逆序逆序函数:void reverse(char *buf){int lenstrlen(buf),ichar afor(i0ileni++){abuf[

字符数组逆序
逆序函数:
void reverse(char *buf)
{
  int len=strlen(buf),i;
  char a;
  for(i=0;i<len;i++)
  {
a=buf[i];
buf[i]=buf[len-1];
buf[len-1]=a;
len--;
  }
}
读写函数:
void wr256B()
{
  int r_size=256;
  char buf[r_size+1];
  /*long l_num;
  l_num=ftell(fi);
  if(r_size>l_num)
  {
r_size=l_num;
  }*/ 
  fseek(fi,-(r_size),2);  
  while (1) 
  {
  fread(buf,r_size,1,fi);
reverse(buf);
  fwrite(buf,r_size,1,fo);
  if (fseek(fi,-(r_size*2),1)) 
break;
  }
}
main:
void main() 
{
  fo=fopen("_a","wb");
  fi=fopen("a","rb");
  //fseek(fi,-1,2);
  wr4KB();
  //remove("a");
  //rename("_a","a");
  fclose(fi);
  fclose(fo);
}
结果:
嚽 
54321098765432109876543210987654321098765432109876543210987654.....
前面多来一个乱码和换行,占来3个字节,如何消除。我用的是Linux。


[解决办法]
read出来后在最后面加个'\0'
[解决办法]
char buf[r_size+1];//这个定义以后,memset一下
memset(buf, 0, sizeof(buf));//在while循环的每次重新用的时候也要清零
[解决办法]
fread 本身就会以回车结束输入,所以你读入的字符串最后一个为回车
要在你的程序中去除此字符然后再翻转 否则就会包含此字符进行了翻转
[解决办法]
楼上正解

热点排行