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

逆序输出解决办法

2012-03-31 
逆序输出#include stdio.h#include string.hvoid reverse(char *buf){int lenstrlen(buf),ichar af

逆序输出
#include "stdio.h"
#include "string.h"

void reverse(char *buf)
{
  int len=strlen(buf),i;
  char a;
  for(i=0;i<len;i++)
  {
a=buf[i];
buf[i]=buf[len];
buf[len]=a;
len--;
  }
}

int main()
{
  int i;
  char s[20],a,buf[27];
  long l_num;
  FILE *fp;
  scanf("%s",s);
  fp=fopen(s,"r");
  fseek(fp,-27,2);

  fread(buf,26,1,fp);
  reverse(buf);
  printf("%s",buf);
  fclose(fp);
}
我在电脑上运行不出结果,求大神指点

[解决办法]
逆序的时候,循环赋值中第一次buf[len]中是什么值呢?可以赋值成功吗?
数组下标从0开始……
[解决办法]

C/C++ code
buf[27]={0};//第一这个在定义的时候要置空,不然strlen会出错    for(i=0;i<len;i++)    {        a=buf[i];        buf[i]=buf[len-1];//for循环中len-1是最后一个元素,而不是len        buf[len-1]=a;        len--;    }
[解决办法]
C/C++ code
buf[27]={0};//第一这个在定义的时候要置空,不然strlen会出错    for(i=0;i<len;i++)    {        a=buf[i];        buf[i]=buf[len-1];//for循环中len-1是最后一个元素,而不是len        buf[len-1]=a;        len--;    }
[解决办法]
C/C++ code
#include "stdio.h"#include "string.h"void reverse(char *buf){  int len=strlen(buf),i;  char a;  for(i=0;i<len;i++)  {    a=buf[i];    //buf[i]=buf[len];//越界    //buf[len]=a;//越界     buf[i]=buf[len-1];    buf[len-1]=a;    len--;  }}int main(){  int i;  char s[20],a,buf[27];  long l_num;  FILE *fp;  scanf("%s",s);  fp=fopen(s,"r");  fseek(fp,-27,2);  fread(buf,26,1,fp);  reverse(buf);  printf("%s",buf);  fclose(fp);} 

热点排行
Bad Request.