取一段字符串的子串
程序要求:编写一个程序用于取字符串的子串(输入子串的开始字符和结束字符的位置),改正程序中的错误并运行。本程序的正确输出结果是:C programming。
#include <stdio.h>
#include <stdlib.h>
/************found************/
char *subs(char *s, int n, int m)
{
char *p;
int i = 0;
/************found************/
p = s;
while (*p++)
i++;
if (n < 0 || m < 0 || m < n || m > i)
{
printf("Substring invidal !\n");
exit(0);
}
/************found************/
p = s + n;
/************found************/
*(p + m + 1) = '\0';
return (p);
}
int main()
{
char s1[] = "The C programing language !";
//如果你写成指针,那么该地址所对应字符将可能无法修改,从而出现segmentation fault!
printf("%s\n", subs(s1, 4, 12));
return 0;
}
特别说明
存储字符串不要滥用指针(除非这个字符串你不会对其处理),尽量写成数组形式,因为如果用指针存储,所分配的地址可能无法对其进行更改!出现segmentation fault!
如下图所示:

运行结果
C programing
肥柴代码之家 2020-06-24