好的,我已经阅读了关于 SO 和许多其他地方的大量答案,但我似乎无法掌握这个简单的功能。请原谅我这么简单的事情,我已经 8 年多没有做过 c/c++ 代码了,我非常想重新学习,所以请耐心等待......
我尝试了许多不同的方法来做到这一点,从通过函数参数分配字符串,将值转移到直接返回它,但在此期间似乎没有任何效果。在编译期间我也没有收到任何错误,但我在运行时确实遇到了段错误。我非常想知道为什么下面的函数不起作用......我只是不明白为什么 else 以 char *content 类型返回正常,但是 strcat(content, line); 才不是。尽管 strcat 的手册页显示 strcat 的定义应该是 (char *DEST, const char *SRC)。正如我目前所理解的那样,它试图在 while 内对 line 变量进行强制转换只会将整数返回给指针。所以我在这里被难住了,希望有时间的人能接受教育!
char * getPage(char *filename) {
FILE *pFile;
char *content;
pFile = fopen(filename, "r");
if (pFile != NULL) {
syslog(LOG_INFO,"Reading from:%s",filename);
char line [256];
while (fgets(line, sizeof line, pFile) != NULL) {
syslog(LOG_INFO,">>>>>>>Fail Here<<<<<<<");
strcat(content, line);
}
fclose(pFile);
} else {
content = "<!DOCTYPE html><html lang=\"en-US\"><head><title>Test</title></head><body><h1>Does Work</h1></body></html>";
syslog(LOG_INFO,"Reading from:%s failed, serving static response",filename);
}
return content;
}
非常感谢这篇文章中所有的好答案。我会给讨论中的每个人一个复选标记,但不幸的是我不能......