我有一个用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);
}
答案 0 :(得分:2)
更改循环:
while (true)
{
currentChar = fgetc(headerFile);
if (currentChar == EOF) break;
putchar(currentChar);
}
有可能比逐字节读取更好的方法(例如,读取整个文件,或以64kB的块读取)。
答案 1 :(得分:0)
'ÿ'
为255。停止尝试打印EOF。 EOF是二进制表示的全部,当减少到8位时,它是255。