用VC++写一个小程序,打开一个txt文件,文件里每一行是一个字符串,要求将字符串长度大于8的筛选出来

然后把符合要求的字符串写到另外一个txt文件中保存起来.下面是我写的代码,编译通过了,可一运行就崩溃.CStringArraystrArr;strArr.SetSize(... 然后把符合要求的字符串写到另外一个txt文件中保存起来.下面是我写的代码,编译通过了,可一运行就崩溃.
CStringArray strArr;
strArr.SetSize(150, 10);
CStdioFile mFile;
CString strText;
mFile.Open(_T("D:\\整理前

.txt"),CFile::modeReadWrite|CFile::modeNoTruncate);

for (int i=0;i<500;i++)
{
mFile.ReadString(strText);
if (strText.GetLength()>=8)
{
strArr.Add(strText);
}

}
mFile.Close();

mFile.Open(_T("D:\\整理后.txt"),CFile::modeReadWrite);
for (int i=0;i<500;i++){
mFile.WriteString(strArr.GetAt(i));
mFile.WriteString(_T("\n\r"));
}
mFile.Close();
展开
 我来答
对床话雨
2014-03-30 · TA获得超过1636个赞
知道小有建树答主
回答量:171
采纳率:100%
帮助的人:153万
展开全部

CStringArray strArr;
//strArr.SetSize(150, 10);  <=======这个地方使用SetSize,下面必须配合用SetAt(),而不能用Add,                   否则记录会追加到151条去,最好去掉,暂时不用。


CStdioFile mFile;
CString strText;
mFile.Open(_T("D:\\整理前.txt"),CFile::modeReadWrite|CFile::modeNoTruncate);
for (int i=0;i<500;i++)  <=======这里的for明显限制了记录条数,同时也可能造成不必要的循环
{
mFile.ReadString(strText);
if (strText.GetLength()>=8)
{
strArr.Add(strText);<========这里前面说了原因,用了SetSize,一开始的记录就加到了151条。
}
}
mFile.Close();

mFile.Open(_T("D:\\整理后.txt"),CFile::modeReadWrite);<======文件打开结果没做判定,如果打开失败,下面的WriteString就会崩溃。
for (int i=0;i<500;i++){<==========这里的for循环也太不严谨
mFile.WriteString(strArr.GetAt(i));
mFile.WriteString(_T("\n\r"));
}
mFile.Close();


把你的源代码整理了一下,试试运行一下,看解决了问题吗?没问题请采纳,谢谢:

#include <stdio.h>
#include <afxcoll.h>
#include <afx.h>
void main()
{
    int i=0;
    CStringArray strArr;
    CStdioFile mFile;
    CString strText;
    if(!mFile.Open(_T("D:\\整理前.txt"),CFile::modeReadWrite|CFile::modeNoTruncate))return;
    
    while(mFile.ReadString(strText))
    {
        if (strText.GetLength()>=8)
        {
            strArr.Add(strText);
        }
    }
    mFile.Close();
    
    if(!mFile.Open(_T("D:\\整理后.txt"),CFile::modeCreate|CFile::modeReadWrite))return;
    
    for (i=0;i<strArr.GetSize();i++)
    {
        mFile.WriteString(strArr.GetAt(i));
        mFile.WriteString(_T("\n\r"));
    }
    mFile.Close();
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式