c语言指针3、有一字符串,包含口个字符。写一两数,将此字符串中从第山个字符开始的 全部字符复制成为另一个字符串。
时间: 2023-12-18 08:19:19 浏览: 35
可以使用指针来解决这个问题。假设原始字符串为`str`,要复制的起始位置为`start`,复制后的字符串为`new_str`,则可以按照以下步骤进行:
1. 首先需要计算出要复制的字符数`len`,即原始字符串的长度减去起始位置。
```c
int len = strlen(str) - start;
```
2. 为新字符串分配内存空间。
```c
char *new_str = (char *)malloc((len + 1) * sizeof(char));
```
3. 使用指针将原始字符串中从起始位置开始的全部字符复制到新字符串中。
```c
char *p = str + start;
strcpy(new_str, p);
```
4. 最后别忘了在新字符串的末尾添加结束符`\0`。
```c
new_str[len] = '\0';
```
完整的代码如下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char str[] = "Hello, world!";
int start = 7;
int len = strlen(str) - start;
char *new_str = (char *)malloc((len + 1) * sizeof(char));
char *p = str + start;
strcpy(new_str, p);
new_str[len] = '\0';
printf("Original string: %s\n", str);
printf("New string: %s\n", new_str);
free(new_str);
return 0;
}
```
输出结果为:
```
Original string: Hello, world!
New string: world!
```