用c语言完善以下代码,并给出完整代码,从字符串str中获取一子串,并将其存放到str1中,该子串从str的第k个字符开始取n个字符,若不足n个字符,则取到str的最后一个字符为止,代码如下:#include <stdio.h> #include <string.h> void main() { char str[81],str1[81]; char *p=str,// //=str1; int k,n; gets(str); scanf("%d%d",&k,&n); if(k<=strlen(str)) { // //; while((n>0)&&(*p!=0)) { // //=*p++; n--; } } *p1=0; puts(str1); getch(); }
时间: 2023-06-06 08:04:33 浏览: 89
完整代码如下:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
int main()
{
char str[MAX_LEN];
char str1[MAX_LEN];
int k, n, len;
printf("请输入字符串:\n");
scanf("%s", str);
len = strlen(str);
printf("请输入子串起始位置和长度:\n");
scanf("%d%d", &k, &n);
if (k > len) {
printf("子串起始位置超出字符串长度!\n");
return 0;
}
if (k + n > len) {
n = len - k;
}
strncpy(str1, str + k - 1, n);
str1[n] = '\0';
printf("获取的子串为:%s\n", str1);
return 0;
}
```
该程序通过`scanf`函数获取用户输入的字符串、子串起始位置和长度,然后利用`strlen`函数获取字符串长度并判断子串起始位置是否超出字符串长度,如果超出则输出提示信息并结束程序。此外,程序还根据子串长度与字符串长度的关系进行了处理,将子串长度截取到字符串的最后一个字符。最后使用`strncpy`函数将子串复制到新的字符数组中,并在结尾添加'\0'作为字符串的结束标志,最终输出所获取的子串。
阅读全文