void http_exec(FILE *fw, char *path) { char cmd[256] = "file --mime-type "; strcat(cmd, path); FILE *fp = popen(cmd, "r"); char type[64]; fgets(type, sizeof(type), fp); char *begin = strstr(type, " "); begin++;puts(begin); if (strcmp(begin, "text/html") == 0) { http_send_headers(fw, "text/html"); http_show(fw, path); } else { http_send_headers(fw, "text/plain"); http_show(fw, path); } }(为什么在与"text/html"比较时总是失败)
时间: 2024-01-14 20:04:05 浏览: 269
在比较字符串时,可能会存在空格或其他不可见字符的问题,导致比较结果不符合预期。可以尝试使用字符串处理函数去除不可见字符,例如使用strtok()函数将type字符串按空格分割,然后比较分割后的字符串。
具体地,可以使用如下代码:
```c
char *token = strtok(type, " ");
while (token != NULL) {
if (strcmp(token, "text/html") == 0) {
http_send_headers(fw, "text/html");
http_show(fw, path);
break;
}
token = strtok(NULL, " ");
}
if (token == NULL) {
http_send_headers(fw, "text/plain");
http_show(fw, path);
}
```
此外,也可以尝试使用更加严格的比较函数,例如strncmp()函数,限制比较的字符数,避免比较结果受到不可见字符的影响。
阅读全文