读书人

逆序输出解决办法

发布时间: 2012-03-31 13:13:26 作者: rapoo

逆序输出
#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);} 

读书人网 >C语言

热点推荐