逆序输出
#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开始……
[解决办法]
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--; }
[解决办法]
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--; }
[解决办法]
#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);}