C语言 - 截取指定长度的字符

1、截取指定长度的字符

在C语言中,没有内置的函数可以直接截取字符串。但是,你可以通过创建一个函数来实现这个功能。以下是一个简单的示例,展示了如何截取一个指定长度的字符串:

#include <stdio.h>
#include <string.h>
 
void substr(char* dest, const char* src, int start, int len) {
    int i, end;
    end = start + len;
    if (end > strlen(src)) {
        end = strlen(src);
    }
    for (i = start; i < end; i++) {
        *dest++ = src[i];
    }
    *dest = '\0'; // 添加字符串结束标记
}
 
int main() {
    char original[50] = "Hello, World!";
    char substring[50];
 
    substr(substring, original, 7, 5); // 截取从第7个字符开始的5个字符
 
    printf("Original: %s\n", original);
    printf("Substring: %s\n", substring);
 
    return 0;
}

这个substr函数接受四个参数:dest是目标字符数组,用于存储截取的字符串;src是原始字符数组;start是开始截取的起始位置;len是要截取的字符长度。函数会检查截取的长度是否超出原始字符串的长度,并进行相应的处理。

运行结果:

 

 

2、截取第几个字符之后的字符串

在C语言中,没有内置的函数可以直接截取字符串的一部分。但是,你可以通过以下几种方法来实现这个功能:

  1. 使用strncpy函数

strncpy函数可以从源字符串中复制一定数量的字符到目标字符串。你可以使用这个函数来截取第几个字符后的字符串。

#include <stdio.h>
#include <string.h>
 
void extract_string(char *dest, const char *src, int n) 
{
    strncpy(dest, src + n, strlen(src) - n);
    dest[strlen(src) - n + 1] = '\0';
}
 
int main() 
{
    char src[100] = "Hello, World!";
    char dest[100];
    int n = 7; // 截取第7个字符后的字符串
 
    extract_string(dest, src, n);
    printf("Extracted String: %s\n", dest);
 
    return 0;
}
  1. 使用指针

你也可以使用指针来截取字符串的一部分。

#include <stdio.h>
 
char *extract_string(const char *str, int n) {
    return (char *)(str + n);
}
 
int main() {
    char *src = "Hello, World!";
    int n = 7; // 截取第7个字符后的字符串
 
    char *dest = extract_string(src, n);
    printf("Extracted String: %s\n", dest);
 
    return 0;
}

注意:在使用指针方法时,你需要小心,因为如果src指向的字符串是常量字符串或只读字符串,你可能会遇到一个运行时错误。另外,这种方法不会创建新的字符串,它只是返回源字符串的一部分。

  1. 使用strtok函数

strtok函数可以根据你提供的分隔符将字符串分割成多个部分。你可以使用这个函数来截取第几个字符后的字符串。

#include <stdio.h>
#include <string.h>
 
int main() {
    char str[100] = "Hello, World!";
    int n = 7; // 截取第7个字符后的字符串
 
    // 使用一个空格作为分隔符来分割字符串
    str[n] = ' '; 
    char *dest = strtok(str, " ");
 
    printf("Extracted String: %s\n", dest);
 
    return 0;
}

注意:strtok函数会改变原始字符串,所以如果你不希望改变原始字符串,你应该先复制原始字符串。

以上就是在C语言中截取第几个字符后的字符串的几种方法。

 

posted @ 2024-04-23 10:01  [BORUTO]  阅读(158)  评论(0编辑  收藏  举报