菜鳥-從一個文件讀內容寫入另一個文件
菜鳥求助-----從一個文件讀內容寫入另一個文件
菜鳥請大俠們幫忙要從1.txt中讀取內容寫到st.txt中。1.txt有多少行是不確定的,內容如下:
;for Title of report|File name of data
;--------------------------------------------------
PART NUM|c:\record\pt.dat
SFIS NUM|c:\record\sfis.dat
STATUS|c:\record\status.dat
ERROR CODE|c:\record\error.dat
;--------------------------------------------------
第一步:讀取時候要略過有";"分號的行,抓取"|"前面的字符寫入2.txt,每個值用"|"隔開,2.txt的最前面是"# ",最後不要加"|"。內容是這個樣子的。
# PART NUM|SFIS NUM|STATUS|ERROR CODE
第二步:讀取1.txt中"|"後面的內容,是個文件路徑,讀取此文件容,追加到剛才的2.txt中。如下:
# PART NUM|SFIS NUM|STATUS|ERROR CODE
11231|123|4564|456|132231|12223
請高手幫忙寫段代碼。感謝。。。。
------解决方案--------------------
以下代码已验证:
菜鳥請大俠們幫忙要從1.txt中讀取內容寫到st.txt中。1.txt有多少行是不確定的,內容如下:
;for Title of report|File name of data
;--------------------------------------------------
PART NUM|c:\record\pt.dat
SFIS NUM|c:\record\sfis.dat
STATUS|c:\record\status.dat
ERROR CODE|c:\record\error.dat
;--------------------------------------------------
第一步:讀取時候要略過有";"分號的行,抓取"|"前面的字符寫入2.txt,每個值用"|"隔開,2.txt的最前面是"# ",最後不要加"|"。內容是這個樣子的。
# PART NUM|SFIS NUM|STATUS|ERROR CODE
第二步:讀取1.txt中"|"後面的內容,是個文件路徑,讀取此文件容,追加到剛才的2.txt中。如下:
# PART NUM|SFIS NUM|STATUS|ERROR CODE
11231|123|4564|456|132231|12223
請高手幫忙寫段代碼。感謝。。。。
------解决方案--------------------
以下代码已验证:
- C/C++ code
#include <afx.h>
void main()
{
CStdioFile mFile;
CString strTemp;
mFile.Open( "1.txt ",CFile::modeRead);
int location;
CString strResult1 = _T("# ");
CString strResult2 = _T("");
if(mFile.m_pStream != 0x00000000) //文件不为空
{
while (mFile.ReadString(strTemp)) //逐行读取
{
if(strTemp != _T(""))
{
location = strTemp.Find(_T(";")); //获取读到的内容中';'的位置
if (location == -1) //没有';'的时候再进行操作
{
location = strTemp.Find(_T("|")); //获取读到的内容中'|'的位置
if (location != -1) // 有'|'的时候再进行操作
{
strResult1 += strTemp.Mid(0, location) + _T("|");
strResult2 += strTemp.Mid(location + 1, strTemp.GetLength() - location - 1) + _T("|");
}
}
}
}
}
strResult1 = strResult1.Mid(0, strResult1.GetLength() - 1);
strResult2 = strResult2.Mid(0, strResult2.GetLength() - 1);
mFile.Open( "2.txt ",CFile::modeCreate | CFile::modeWrite);
mFile.SeekToEnd(); //光标移到最后
mFile.WriteString(strResult1 + _T("\n") + strResult2);
}
------解决方案--------------------
楼主看下这个行不行:
- C/C++ code
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void main()
{
FILE *fp1,*fp2;
char str[50][100];
char st[200];
char stt[200];
int i,j,k,t,ii,jj;
fp1 = fopen("1.txt", "r");
if(fp1 == NULL)
{
exit(1);
}
k = 0;
while(fgets(str[k++], 80, fp1) != NULL);
--k;
fclose(fp1);
memset(st, 0, sizeof(st));
memset(stt, 0, sizeof(stt));
st[0] = '#';
st[1] = ' ';
ii = 2;jj = 0;
for(i = 0; i < k; ++i)
{
if(str[i][0] == ';')
{
continue;
}
t = 0;
for(j = 0;j < strlen(str[i]); ++j)
{
if(str[i][j] == '|')
{
st[ii++] = str[i][j];
t = 1;
continue;
}
if(t==0 && str[i][j] != '\n')
{
st[ii++] = str[i][j];
}
else if(str[i][j] != '\n')
{
stt[jj++] = str[i][j];
}
}
stt[jj++] = '|';
}
fp2 = fopen("2.txt", "w");
if(fp2 == NULL)
{
exit(1);
}
fputs(st, fp2);
fputs(stt, fp2);
fclose(fp2);
}