我有一个用C编写的网站后端,它将HTML标头和页脚模板以及两者之间的动态生成内容粘贴在一起。由于某些原因,在每次调用displayTemplate()之后会附加一个不需要的'ÿ'(变音y)字符(ASCII 152)。此字符是不需要的,不是文件的一部分。如何防止输出?谢谢。

执行此功能的代码如下所示:

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

void displayTemplate(char *);

int main(void) {
    printf("%s%c%c\n", "Content-Type:text/html;charset=iso-8859-1", 13, 10);
    displayTemplate("templates/mainheader.html");
    /* begin */
        printf("<p>Generated site content goes here.</p>");
    /* end */
    displayTemplate("templates/mainfooter.html");
    return 0;
}
void displayTemplate(char *path) {
    char currentChar;
    FILE *headerFile = fopen(path, "r");
    do {
        currentChar = fgetc(headerFile);
        putchar(currentChar);
    } while(currentChar != EOF);
    fclose(headerFile);
}

最佳答案

更改循环:

while (true)
{
  currentChar = fgetc(headerFile);
  if (currentChar == EOF) break;
  putchar(currentChar);
}


可能有比逐字节读取更好的方法(例如,读取整个文件或以64kB的块读取)。

关于html - 从CGI输出中删除不需要的字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6366373/

10-10 01:31