首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C >> C 語言問答

C語言字串查找替換:URL 參數值動態修改範例

     編輯:C 語言問答

需求:在 URL 字串中替換指定參數值

原始:b221.html?a1=11.1&a2=22.2&a3=0
目標:a1=33.3, a2=44.4

通用替換函數

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

// 在 str 中尋找 key,將其後緊鄰的值替換為 new_val
// 假設格式為 key=value& 或 key=value\0
void replace_param(char *str, const char *key, const char *new_val)
{
    char *pos = strstr(str, key);
    if (!pos) return;

    pos += strlen(key); // 移至 '=' 後
    if (*pos != '=') return; // 非精確匹配 key=
    pos++; // 跳過 '='

    char *end = pos;
    while (*end && *end != '&') end++; // 找到值結束

    // 計算尾部剩餘長度並移動
    size_t tail_len = strlen(end);
    size_t new_len = strlen(new_val);
    memmove(pos + new_len, end, tail_len + 1); // 含 \0
    memcpy(pos, new_val, new_len);
}

int main()
{
    char url[] = "b221.html?a1=11.1&a2=22.2&a3=0";
    replace_param(url, "a1=", "33.3");
    replace_param(url, "a2=", "44.4");
    printf("%s\n", url); // b221.html?a1=33.3&a2=44.4&a3=0
    return 0;
}

注意事項

  • 緩衝區需足夠大 (此處原地修改,新值不可超過舊值長度,否則需動態分配)。
  • 若參數值可能包含特殊字元,建議使用完整 URL 解析庫 (如 libcurl 的 curl_url API)。
  • 大小寫敏感:HTTP 參數名區分大小寫,依實際規格調整 strstr → strcasestr (POSIX)。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved