一个面试的问题
有一文件其内容为:
fied1 = 1
fied2 = 1
fied3 = 3
.....
要求把fied2 = 1 修改为 fied2 = 2
怎么修改哦,使用语言为C
[解决办法]
先读到内存中,修改文件指针,把所需要修改的内容替换成你需要的.
修改文件指针有点复杂,也可以避开修改文件指针,下面是我以前写的部分代码,
和你需要的不太一样,希望对你有所帮助!
CString ReadWriteData::GetData(int line)//获得第 line 行文本数据行数
{
CString csline,csall;
int n=1;
CStdioFile file;
int line1 = GetLine();
file.Open("ReadWrite.txt",CFile::modeRead,NULL);
while(n<=line)
{
if((file.ReadString(csline)!=NULL))
{
if(line1==0)
{
csall=csline;
}
else
{
csall = csline + "\r\n";
}
n++;
}
else
{
csall="";
break;
}
}
file.Close();
return csall;
}
int ReadWriteData::GetLine()// 获得文本文件中共有数据行数
{
CString csline;
int n=1;
CStdioFile file;
file.Open("ReadWrite.txt",CFile::modeRead,NULL);
while(file.ReadString(csline)!=NULL)
{
n++;
}
file.Close();
return n;
}
void ReadWriteData::AddDataLastLine(CString str)//在文本文件的末尾行加上一行字符串 str 数据
{
CStdioFile file;
CFileException fileExecp;
str=str+"\r\n";
file.Open("ReadWrite.txt",CFile::modeCreate|CFile::modeNoTruncate|
CFile::modeWrite, &fileExecp);
file.SeekToEnd( );
file.WriteString(str);
file.Close();
}
void ReadWriteData::DeleteData(int line)//删除文本文件的第 line 行数据
{
CString str="";
int MaxLine = GetLine();
if(line<=0 || line>MaxLine)
return;
int i;
for(i=1;i<=MaxLine;i++)
{
if(i != line)
{
str=str+GetData(i);
}
}
Write(str);
}
void ReadWriteData::Write(CString str)
{
CFile ffile("ReadWrite.txt",CFile::modeCreate| CFile::modeWrite);
ffile.Write(str,strlen(str));
ffile.Close();
}