我有一個用C語言編寫的網站後端,它將HTML頁眉和頁腳模板以及動態生成的內容粘貼在一起。出於某種原因,每次調用displayTemplate()後都會附加一個不需要的'''(umlaut-ed y)'字符(ASCII 152)。這個字符是不需要的,而不是文件的一部分。如何防止輸出?謝謝。刪除不需要的字符FOM CGI輸出
執行此功能的代碼看起來是這樣的:
#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);
}
你不應該檢查EOF _before_你輸出的字符?另外,152不是ASCII,ASCII只能上升到127。最後,你不需要手動打印「\ 13 \ 10」(你可以這樣引用),「\ n」已經考慮到了這一點。 – 2011-06-16 02:05:45
使用'fread'和'fwrite'更好地處理文件。 – lhf 2011-06-16 02:10:21
如果你發現任何有用的答案,你應該「接受」它們來提高你的StackOverflow業力和尊重:-) – 2011-06-16 02:13:50