航空发动机装试技术:简单的C++ 程序为何输出结果不对?

来源:百度文库 编辑:神马品牌网 时间:2024/05/02 06:48:18
程序目的是将传入的字符串以"#"为分隔行,写入一个文本文件中,为何不断读取字符串的第一个字符?而且程序停不下来?

#include<fstream.h>
#include<string.h>

class FileIO
{
public:
void makefile(char str[]);
};

void FileIO::makefile(char str[])
{
char *psubstring=str;
ofstream outf("C://file.txt");
if(!outf)
{
cout<<"Cannot open file \n";
}
while(*psubstring!=NULL)
{
if(*psubstring!='#')
{
outf.put(*psubstring);
}
else
{
outf<<'\n';
psubstring++;
}
}
}

void main()
{
char string[500]={"10020108#存入#2000.00#3090.00&20020108#支取#-2.00#190.00"};
FileIO fi;
fi.makefile(string);
}

因为读取第一个字符之后,没有改变字符串指针的位置。
修改如下:

....
if(*psubstring!='#')
{
outf.put(*psubstring); //之后也要改变字符串的指针
}
else
{
outf<<'\n';
// psubstring++; 注释掉
}
psubstring++; // 统一改变字符串的指针
.....