当前位置:编程学习 > VC++ >>

请VC++高手帮帮忙嘛,怎样提取.txt文本中的一行内容,且一个一个的显示!

就是有这样一个文本GPS.txt,内容如下
fdsal;jfeioaf;dsa
$GPRMC,121208,A,2510.1234,N,12520.4321,E,,,070410,,,,*hh
fdasgdsafa
fd;sklajfl;djas;fje;j;ajfiovncxznv;aj
gasgsdagstyqyhushsd,我只要其中的一行$GPRMC,121208,A,2510.1234,N,12520.4321,E,,,070410,,,,*hh
它在文本中不一定是第二行,有可能是任意一行,不管他在哪都能找出来,而且这行的数据要分别显示出来,不是一串的出来,哪位高手会的话帮我写写啊,我要完整的代码,谢谢,急用哦!
答案:看你的问题在这里挂了一天了
现在有点空,就帮帮你吧~~~
至于你说的“分别显示”我理解为以逗号作为分隔符
逐个输入里面的子字符串,不知道是不是你要的效果
=========================================
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int FindStr(char * pszSource, char * pszDest)
{
int iDestLen, iSourLen, iLineCount = 1, i, j;
char cFind;

iDestLen = strlen(pszDest);
iSourLen = strlen(pszSource);
if (iSourLen < iDestLen)
{
return -1;
}
for (i = 0; i < iSourLen; i ++)
{
if (pszSource[i] == '\n')
{
iLineCount ++;
}
cFind = 1;
for (j = 0; j < iDestLen; j ++)
{
if (pszSource[i + j] != pszDest[j])
{

cFind = 0;

break;
}
}
if (cFind == 1)
{
return iLineCount;
}
}
return 0;
}

void FormatPrintf(char * pszDest, char szDiv)
{
int iLen = strlen(pszDest), i, iCurPos;
char szBuffer[1024];

iCurPos = 0;
for (i = 0; i < iLen; i ++)
{
if (pszDest[i] != szDiv)
{
szBuffer[iCurPos] = pszDest[i];
iCurPos++;
}
else
{
szBuffer[iCurPos] = 0;
if (iCurPos != 0)
{

printf("%s\n", szBuffer);

iCurPos = 0;
}
}
}
}

void main()
{
FILE * file;
char * pszFile = (char*)malloc(1024);
char * pszFind = "$GPRMC,121208,A,2510.1234,N,12520.4321,E,,,070410,,,,*hh";
int
iReadCount;

file = fopen("GPS.txt", "r");
iReadCount = fread(pszFile, sizeof(char), 1023, file);
fclose(file);
if (iReadCount > 1023)
{
iReadCount = 1023;
}
pszFile[iReadCount] = 0;

printf("要查找的字符串在第 %d 行\n", FindStr(pszFile, pszFind));
FormatPrintf(pszFind, ',');
return;
}
=========================================
ma_li_qiang所言极是,我的C不咋地,因为我都是用MFC
但是我的FindStr有用到吧?
还有就是,行内比较的确不用一个个字符比较
strstr就可以,但是我要计算它在哪一行
所以还是要一个个比较
不过getline函数的确很方便,之前我一直都不知道有这个函数
因此就自己写了个~~~
至于为什么帮LZ写这个程序
因为我也是从基础走过来的
个人觉得有个源代码,学习起来会比较容易接受
敢问有哪个不是先看别人的代码然后再自己写?
有哪个一生下来就会的?
对这MSDN这么大的文档,我看不是每个人一开始就能看懂的
也希望LZ能抛砖引玉,举一反三

上一个:VC++写程序为什么不直接case IDC_EXIT,而是用WM_CLOSE
下一个:求VC++高手做一个简单的题目?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,