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

C语言HTTP服务器开发:配置文件字符串传递异常排查

问题分析

你遇到的段错误大概率是因为fgets读取配置文件时,把**换行符\n**也一并读进了index_loc数组里,而直接传入字符串常量"index.html"时没有这个换行符。setHttpHeader函数可能未处理带换行的字符串,导致后续字符串操作(比如拼接、查找)出现内存访问错误。

比如配置文件第二行的index.html后跟着换行,fgets会把"index.html\n\0"存入index_loc,而非你期望的"index.html\0"。

解决方案

在调用setHttpHeader之前,手动去除字符串末尾的换行符:

char index_loc[20];
char const* const fileName = "config.txt";
FILE* file = fopen(fileName, "r");
if(!file){
    printf("\n Unable to open : %s ", fileName);
    return -1;
}

// 先读取端口号(确保跳过配置文件第一行)
char port_buf[10];
fgets(port_buf, sizeof(port_buf), file);

// 读取第二行的页面路径
if(fgets(index_loc, sizeof(index_loc), file) != NULL) {
    // 查找换行符并替换为字符串结束符
    char* newline = strchr(index_loc, '\n');
    if(newline != NULL) {
        *newline = '\0';
    }
}

setHttpHeader(httpHeader, index_loc);
额外注意事项
  • 确保index_loc的长度足够容纳配置文件中的路径,避免缓冲区溢出
  • 始终检查fgets的返回值,确认成功读取到目标行内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 14:20:21