从字符串1中截取m位置开始、n位置结束的子字符串,并将子字符串反序输出。

从字符串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数组即可。