问题出在哪里?
问题一:
我写了一个逆序程序,但是不知道问题出在哪里.请高手指点.
下面程序1中在VC6下编译通过了,但是运行不了。我调试跟踪了下.运行到程序标记处就卡住了。报错为unhandled exception in reverse.exe oxC0000005 Access Violation.
问题二:
我看到网上有些人实现这样功能的程序中求指向字符串末端的指针不用库函数strlen的,比如程序2中用的while循环. 我想知道平时我们用库函数是不是能尽量不用就不要用? 还是说要去比较库函数和不用库函数的效率?如果我不知道库函数是怎么实现的不知道哪个的效率高时该如何取舍?
****************************程序1.//实现字符串的逆序功能
#include <stdio.h>
#include <string>
char * reverse(char *s);
void main()
{
char *s="abcdefg";
char *revs=reverse(s);
printf ("%s\n",*revs);
}
char * reverse(char *s)
{
int i,n;
char * e;
n=(int)strlen(s);
e=s+n;
for(i=0;i<(n/2);i++)
{
char t;
t=*(s+i);
*(s+i)=*(e-i);//**这个地方运行不下去*******unhandled exception
//in reverse.exe oxC0000005 Access Violation.
*(e-i)=t;
}
return s;
}
****************************程序2 //对比我上面自己写的程序
char *p="Every generation has a lengend";
char *q=p;char *s=p;
while(*q)q++;q--;
while(q>s){char c=*q;*q=*s;*s=c;q--;s++;}
printf("%s\n",p);