从字符串1中截取m位置开始、n位置结束的子字符串,并将子字符串反序输出。
#include <stdio.h>
#include <string.h>
void reverse_string(char str[], int len) {
// 反转字符串
char temp;
for (int i = 0; i < len / 2; i++) {
temp = str[i];
str[i] = str[len - i - 1];
str[len - i - 1] = temp;
}
}
int main() {
char str1[100];
int m, n;
printf("请输入字符串1:");
scanf("%s", str1);
printf("请输入开始截取位置m:");
scanf("%d", &m);
printf("请输入结束截取位置n:");
scanf("%d", &n);
int len = strlen(str1);
char substr[100];
int i;
for (i = 0; i < n - m + 1; i++) {
substr[i] = str1[m + i - 1];
}
substr[i] = '\0';
reverse_string(substr, i); // 反转提取的子字符串
printf("所截取的子字符串为:%s\n", substr);
return 0;
}
#include <stdio.h>
#include <string.h>
void reverse(char *str, int len) {
for(int i = 0; i < len / 2; i++) {
char temp = str[i];
str[i] = str[len - i - 1];
str[len - i - 1] = temp;
}
}
int main() {
char str1[] = "Hello world";
int m = 3;
int n = 8;
int sub_len = n - m + 1;
char sub_str[sub_len + 1];
strncpy(sub_str, str1 + m, sub_len); // 截取子字符串
sub_str[sub_len] = '\0'; // 字符串末尾添加 '\0'
reverse(sub_str, sub_len); // 反转子字符串
printf("%s\n", sub_str);
return 0;
}
用strncpy()函数将字符串1中m到n位置的子字符串截取出来放在sub_str数组中,然后使用reverse()函数将sub_str数组中的字符反转,最后输出反转后的sub_str数组即可。