我正在处理客户端,服务器项目。我收到了必须创建两个文件的服务器的响应。第一个文件是.html文件,第二个文件是.png文件。我解析响应,并尝试在while
循环中动态创建文件。
...
FILE *fwrp;
char *response = malloc(MAXDATASIZE * sizeof(char));
memset(response, '\0', sizeof(char) * MAXDATASIZE);
char *r = &response[0];
while (fread(field, sizeof(field), 1, fpr)) {
for (int i = 0; i < MAXDATASIZE; i++) {
*r = field[i];
r++;
//Some unecessary code...
if (strstr(response,"file=")){
char* newFileName = strchr(response, '=');
newFileName++;
fwrp = fopen(newFileName, "w");
data = false;
//...
我希望我没有删节太多必要的信息。 问题如下:创建文件。还具有正确的内容。问题只是文件的动态名称。一次,该名称应为ok.png
,但应为'ok.png'$'\n'
html文件也有同样的问题。名称应为example.html
,但应为'example.html'$'\n'
已经尝试过在创建名称之前先打印它们。它们在打印时具有正确的格式。我尝试使用strdup
分配内存,但是由于某种原因,它无法正常工作。有人知道为什么会出现此问题吗?
我不知道,为什么要将读取的field
内容复制到response
中,而不是严格地将其复制到response
中。另外,您没有显示field
的声明。
零终止怎么样?
fread()