2

我只想在文件中写入空行。我使用以下代码但不工作。

        char* RegID;
        RegID = "10";
        char* mndtime;
        mndtime  = "10";
        char* resourcetype;
        resourcetype  = "Backup";
        char* ressubtype;
        ressubtype = "shadowprotect";
        char* DataBuffer = new char[100];

        StrCpy(DataBuffer,"<wpshadowprotectstatus>");
        strcat(DataBuffer,"\n");
        strcat(DataBuffer,"<mndtime>");
        strcat(DataBuffer,RegID);
        strcat(DataBuffer,"<\\mndtime>\n");
        strcat(DataBuffer,"<resourcetype>");
        strcat(DataBuffer,RegID);
        strcat(DataBuffer,"<\\resourcetype>\n");
        strcat(DataBuffer,"<ressubtype>");
        strcat(DataBuffer,RegID);
        strcat(DataBuffer,"<\\ressubtype>\n");
        strcat(DataBuffer,"<jobname>");
        strcat(DataBuffer,RegID);
        strcat(DataBuffer,"<\\jobname>\n");
        strcat(DataBuffer,"<jobstarttime>");
        strcat(DataBuffer,RegID);
        strcat(DataBuffer,"<\\jobstarttime>\n");
        HANDLE hFile; 

        hFile = CreateFile("text.txt",                // name of the write
                           GENERIC_WRITE,          // open for writing
                           0,                      // do not share
                           NULL,                   // default security
                           CREATE_NEW,             // create new file only
                           FILE_ATTRIBUTE_NORMAL,  // normal file
                           NULL);                  // no attr. template

        if (hFile == INVALID_HANDLE_VALUE) 
        { 
            return 0;
        }
        DWORD dwBytesToWrite = (DWORD)strlen(DataBuffer);
        DWORD dwBytesWritten = 0;
        BOOL bErrorFlag = FALSE;
        bErrorFlag = WriteFile(hFile,           // open file handle
                        DataBuffer,      // start of data to write
                        dwBytesToWrite,  // number of bytes to write
                        &dwBytesWritten, // number of bytes that were written
                        NULL);            // no overlapped structure

但我不知道为什么新行没有转储到文本文件中。

注意:- 1)我不想使用 std:: library c++。2)不想使用xml解析器。

4

2 回答 2

2

视窗?如果是这样,请将 \n 替换为 \r\n。对于 FILE* / iostream,它是由运行时自动完成的,但不是对于 WriteFile。而且,当然,您需要两个行尾才能获得空行。

顺便说一句,使用 strcat 生成长字符串具有 O(N^2) 复杂度,这非常糟糕。

于 2013-04-30T10:11:38.203 回答
2

用于\r\nWindows 上的换行符。

而且您的 XML 格式不正确。XML 结束标记使用/字符,而不是\字符。您正在RegID为所有 XML 值编写相同的变量,而不是使用其他变量(mndtimeresourcetype等)。

于 2013-05-02T05:09:00.903 回答