在C中动态创建文件名

问题描述 投票:-1回答:1

我正在处理客户端,服务器项目。我收到了必须创建两个文件的服务器的响应。第一个文件是.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分配内存,但是由于某种原因,它无法正常工作。有人知道为什么会出现此问题吗?

c string file server client
1个回答
0
投票
  1. 我不知道,为什么要将读取的field内容复制到response中,而不是严格地将其复制到response中。另外,您没有显示field的声明。

  2. <<
  3. 零终止怎么样?

  4. 所以,我的主张是:
  5. fread()

© www.soinside.com 2019 - 2024. All rights reserved.