You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从C语言字符串中提取指定目标串?现有代码输出异常求修正

问题解决:提取指定字符串内容

原代码问题分析

  • 错误将目标内容中包含的\r作为分隔符,导致目标内容被提前截断,初始定位完全偏离目标区域。
  • strtok的使用逻辑混乱,误处理了字符串前缀,后续的strcpy进一步破坏原字符串结构,最终输出了前缀中的控制字符内容。

修改后的代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(){
    char str[1024]="\r\n\033[?2004l\r/home/user01\ruuidd:x:108:114::/run/uuidd:/usr/sbin/nologin\r\n\033[?2004h\033]0;user01@audit: ~\auser01@audit:~$ ";
    // 定位目标内容的起始位置(利用固定开头字符串)
    char *start = strstr(str, "/home/user01");
    if (start == NULL) {
        printf("未找到目标内容\n");
        return 1;
    }
    // 定位目标内容的结束位置(目标后紧跟的"\r\n")
    char *end = strstr(start, "\r\n");
    if (end == NULL) {
        printf("未找到目标结束标记\n");
        return 1;
    }
    // 在结束位置添加字符串终止符,截断原字符串
    *end = '\0';
    // 输出目标内容
    printf("output : %s\n", start);
    return 0;
}

代码逻辑说明

  1. 用strstr定位目标内容的固定起始标识/home/user01,确保精准找到目标开头。
  2. 从起始位置开始查找目标后的结束标记\r\n,确定目标内容的边界。
  3. 通过将结束位置设为\0截断原字符串,直接输出起始位置开始的内容,即可得到目标字符串。

内容的提问来源于stack exchange,提问作者HOON

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 17:25:29