请教,指针输出问题
写了个函数,按规定要求截取字符串,当调用函数,截取完成后,指针输出却是什么也没有的?请问是什么问题呢?例如说,比如 str_substr("abcdef", 1, 3); 得到 bc ;
代码看起来长,其实就一部分有用的!
谢谢!
程序代码:
#include<stdio.h> #include<stdlib.h> #include<string.h> static char* str_substr(char *str,const int from, const int to); int main() { char str[]="abcdef"; //开始截取条件 int from=1; //截取完毕条件 int to=3; char *p; p=str_substr(str,from,to); printf("%s",p); system("pause"); return 0; } /** *字符串截取 *@param str: 原字符串 *@param from: 截取开始的位置 *@param to: 替换以后的子字符串 *@return 和str地址一样 */ static char* str_substr(char *str,const int from, const int to) { char *s_str; char *n_str; int i=0; //分配动态空间 n_str=(char *)malloc(sizeof(char *)*5); memset(n_str,0,10); s_str=str; //判断截取 while(i++<to) { //当达到截取要求时 if(i>from) { //把截取的字符元素赋值到新建内存处 *n_str++=*s_str++; } else { //原字符串指针后移,继续判断 s_str++; } } //新字符串加个结束符 *n_str='\0'; //返回新字符串首地址 return n_str; }