我有一个用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/