注册 登录
编程论坛 VC++/MFC

请教怎样去掉txt文件中的所有回车换行符?

tyhj281 发布于 2012-12-26 11:10, 8460 次点击
刚接触VC不久,请给位大侠帮忙看看,怎么编程能实现,最好有相关程序。
txt原文件内容:
111,222,333,444,555,
666,777,888,999,111,
222,333,444,555,666,
。。。。。。。。。。
去掉回车换行符后重新写入txt文件,得到:
111,222,333,444,555,666,777,888,999,111,222,333,444,555,666,777,。。。。。。
没有换行符,让txt文件自动换行,直到所有数据写完。
7 回复
#2
yuccn2012-12-26 12:27
这个问题你不是问过了吗?没有得到满意的答案?
#3
tyhj2812012-12-26 16:12
是 啊,没有得到满意的答案。
后来一想只要去掉所有的换车换行符就可以了,但是我不知道怎么编程实现啊。
各位大哥大姐,谁能给个程序代码啊!
在这里先谢谢了!
#4
yuccn2012-12-27 22:41
这次希望你有满意的答案

#include <windows.h>

void RemoveEnter(char *pFilePath);

void main()
{   
    RemoveEnter("d:\\abc.txt");
}

void RemoveEnter(char *pFilePath)
{
    HANDLE hFile = NULL;
    char *pFileRead  = NULL;
    char *pFileWrite = NULL;
    DWORD dwFileSize = 0;
    DWORD dwFileReadWrite = 0;

    int nIndexRead = 0;
    int nIndexWrite = 0;

    // 以读的方式打开文件
    hFile = ::CreateFileA(pFilePath, GENERIC_READ,FILE_SHARE_WRITE,NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
    if (INVALID_HANDLE_VALUE == hFile) {  
        return;
    }

    // 获取文件大小,
    dwFileSize = ::GetFileSize(hFile, NULL);

    if (dwFileSize == 0) {
        goto _EXIT;
    }

    // 申请读写 缓存
    pFileRead = (char *)malloc(dwFileSize);
    pFileWrite = (char *)malloc(dwFileSize);
    if (pFileRead == NULL || pFileWrite == NULL) {
        goto _EXIT;
    }
    memset(pFileRead, 0, dwFileSize);
    memset(pFileWrite, 0, dwFileSize);

    ::ReadFile(hFile, pFileRead, dwFileSize, &dwFileReadWrite, NULL);
    if (dwFileSize != dwFileReadWrite) {   
        goto _EXIT;
    }

    while (nIndexRead < dwFileSize) { // 不是换行的,保持到内存
        if (pFileRead[nIndexRead] != '\r' && pFileRead[nIndexRead] != '\n') {
            pFileWrite[nIndexWrite] = pFileRead[nIndexRead];

            nIndexWrite++;
        }  

        nIndexRead++;
    }

    // 关闭原来的文件。
    ::CloseHandle(hFile);

    // 再次打开,这次是写入文件   CreateAlways 覆盖写入
    hFile = ::CreateFileA(pFilePath, GENERIC_WRITE,FILE_SHARE_WRITE,NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
    if (INVALID_HANDLE_VALUE == hFile) {              
        goto _EXIT;
    }
    ::WriteFile(hFile, pFileWrite, nIndexWrite, &dwFileReadWrite, NULL);     


_EXIT:
    if (INVALID_HANDLE_VALUE != hFile) {                          
        ::CloseHandle(hFile);
        hFile = NULL;
    }

    if (pFileRead != NULL) {
        free(pFileRead);
        pFileRead = NULL;
    }

    if (pFileWrite != NULL) {
        free(pFileWrite);
        pFileWrite = NULL;
    }
}
#5
tyhj2812012-12-28 20:07
非常感谢 yuccn ,问题解决了。
使我对文件操作有了新的认识,能不能推荐几本学VC的书啊?由于接触VC不久,市面上的书太多了,麻烦推荐几本。
#6
yuccn2012-12-29 10:26
vc的话,孙鑫那边 vc++深入详解  不错,比较适合入门。。

如果是学windows编程的,比较出名的有 windows核心编程 5了
#7
tyhj2812012-12-30 17:44
好的,谢谢了
#8
yangmingcout2012-12-31 17:17
感觉没怎么操作过文件,不太会这个,估计以后用的着
1