C语言,指针字符串函数
#include <stdio.h>
#include < string.h>
fun(char *w,int n)
{char t,*s1,*s2; s1=w;s2=w+n-1;
while(s1<s2) {t=*s1++;*s1=*s2--;*s2=t;}
}
main()
{char *p;
p="1234567";
fun(p,strlen(p));
puts(p);
}
求上述程序运行的结果和详解
一些错误在注释中说明,将输出1711717
#include <stdio.h>
#include < string.h>
fun(char *w,int n)
{char t,*s1,*s2;
s1=w;//首地址,就是腔尘亮1
s2=w+n-1;//尾地址,就是7
while(s1<s2)//兄让当s1小于s2时,循环下去
{t=*s1++;
*s1=*s2--;
*s2=t;
}
/*
第一轮交换,是1734517,s1指向w[1],s2指向w[5]
第二轮交换,是1714717,s1指向w[2],s2指向w[4]
第三轮交换,是1711717,s1指向w[3],s2指向w[3]
*/伍宽
}
main()
{char p[]="1234567";
fun(p,strlen(p));//将指向1和指向7的地址传送给fun函数
puts(p);
}
运行结果是7654321
#include <stdio.h>
#include < string.h>
fun(char *w,int n) //定义一个函数,输入参数为字符型指针w与整型数n
{char t,*s1,*s2; s1=w;s2=w+n-1; //声明字符宽做型指针s1与慎亮衡s2,其中s1指向字符串的键前第一个字符,s2指向倒数第二个字符,(还有个字符\0在最后)
while(s1<s2) {t=*s1++;*s1=*s2--;*s2=t;} //当s1的地址比s2的地址小时,交换
}
main()
{char *p; //声明字符型指针p
p="1234567"; //把字符串1234567的首地址赋值给p
fun(p,strlen(p)); //运用函数
puts(p); } //输出交换后的字符串
#include <凯罩stdio.h>
#include <迟孙雹 string.h>
fun(char *w,int n)
{char t,*s1,*s2; int i,j;s1=w;s2=w+n;
puts(w);
//码帆while(*s1<*s2) {t=*s1;*s1=*s2;*s2=t;s1++;s2--;}
for(i=0,j=n-1;i<j;i++,j--)
{
t=w[i];
w[i]=w[j];
w[j]=t;
}
}
main()
{char p[]="1234567";
fun(p,strlen(p));
puts(p);
}