-1

c と Visual Studio を使用して、マップされたファイルに文字列を書き込もうとしています。

    ( pFile = (char *) MapViewOfFile(hMMap,FILE_MAP_ALL_ACCESS,0,0,0))

    start = pFile;

    while(pFile < start + 750){
    *(pFile++) = ' ';
    *(pFile++) = 'D';
    *(pFile++) = 'N';
    *(pFile++) = 'C';
    *(pFile++) = 'L';
    *(pFile++) = 'D';
    *(pFile++) = ' ';
    if(!((pFile - start) % 50))
        *(pFile++) = 10;
    else
        *(pFile++) = ',';
}

このようなものを書くと、うまく書くことができます。しかし、このファイルに文字列を書きたいです。どのようにできるのか?私が試してみました

  sprintf(toFile, "A message of %3d bytes is received and decrypted.\n", strlen(message));
  WriteFile(pFile,toFile,strlen(toFile),&bytesWritten,NULL);

これはもう…

4

1 に答える 1

2

WriteFile()HANDLEメモリアドレスへのポインタではなく、ファイルへのオープンを期待しています。指しているメモリの内容に新しいデータを直接書き込むだけです。そのために C ライブラリの文字列関数を使用できます。

char *start = (char *) MapViewOfFile(hMMap,FILE_MAP_ALL_ACCESS,0,0,0);

char *pFile = start; 
while (pFile < (start + 750))
{ 
  strcpy(pFile, " DNCLD ");
  pFile += 7;
  *(pFile++) = (((pFile - start) % 50) == 0) ? '\n' : ','; 
} 
...
sprintf(pFile, "A message of %3d bytes is received and decrypted.\n", strlen(message));     
...
UnmapViewOfFile(start);
于 2011-12-20T20:37:24.330 に答える