俺喜欢与知道自己在问什么的人交流
偶放弃所有文章版权,偶在BCCN论坛任何贴子,可转贴,可散发,可抄袭,可复制,可被冒名顶替,可被任何人引用到任何文章中且不写出引文出处,偶分文不取。
那你帮我看看这个程序 那里有问题`~!~
#include <string.h>
#include <stdio.h>
char * substring(char *str1,char *str2,int a,int b) ;
int main( )
{
char str[] = "a=01234567890;b=1234567890;c=12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" ;
char *per1 ;
char *per2 ;
per1 = str ;
substring(per2,per1,3,10) ;
}
/* 这个函数功能是 取某一段字符串的作用~ */
char * substring(char *str1,char *str2,int a,int b)
{
char *ptr1=str1;
int i ;
for(i=a;i<a+b;i++)
{
*ptr1=*(str2+i-1);
ptr1++ ;
}
*ptr1=0;
return str1;
}
[此贴子已经被作者于2006-7-5 10:18:30编辑过]
那你帮我看看这个程序 那里有问题`~!~
#include <string.h>
#include <stdio.h>
char * substring(char *str1,char *str2,int a,int b) ;
int main( )
{
char str[] = "a=01234567890;b=1234567890;c=12345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789" ;
char *per1 ;
char *per2 ;
per1 = str ;
substring(per2,per1,3,10) ;//per2指向五角大楼的马桶,肯定会错了!!
}
/* 这个函数功能是 取某一段字符串的作用~ */
char * substring(char *str1,char *str2,int a,int b)
{
char *ptr1=str1;
int i ;
for(i=a;i<a+b;i++)
{
*ptr1=*(str2+i-1);
ptr1++ ;
}
*ptr1=0;
return str1;
}
对,你可以认为per2[]也是一种特殊的指针,只不过其内存分配是在编译时完成,即程序一运行就得为其分配好内存空间.
第二,per2不能改变指向
如果是char *per2;那么,你记住,per2它只有一个int大小,甚至你完全可以把它看成一个int;
如果你想per2指向一个字符串(注意,不是赋给它一个字符串),那么你需要做的是必须先有一些存贮字符串的空间(这个就叫动态分配内存),然后,再把这些空间的首址值赋给per2,这样你才可以操作