vc 如何读取指定字符串所在行的内容

a278401627 2013-01-28 02:13:31
目标txt路径为 C:\123.txt

里面的内容大致是
7E1022044087E0$0$0.0.18$8
411FE0040$1$0.0.11$8
6310A224488610$2$0.0.16$8 //注意631···在文本中的位置不是固定的,要先定位,再读取

421022444886E0$3$0.0.15$8
080681107F8050$4$0.0.16$8
F21222444888E0$5$0.0.18$8
7E1222446880E0$6$0.0.19$8
C010027C700800$7$0.0.13$8
6E1222444886E0$8$0.0.19$8
701162244487E0$9$0.0.19$8


现在我已经实现了判断文本中是否存在 6310A224488610

现在需要实现的是 读取6310A224488610 所在行的全部内容也就是
6310A224488610$2$0.0.16$8

有时间的朋友再帮忙分离一下$得到其中的2

开发环境是VC6.0 控制台程序 本人基础差,会的朋友请给出代码 谢谢
...全文
334 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2014-09-09
  • 打赏
  • 举报
回复
楼主可否贴上代码分享下呢?谢谢 我也想在文本里找到几行指定的字符串,然后把这行删掉,重新写入。没有找到就继续循环,再继续判断。
a278401627 2013-01-29
  • 打赏
  • 举报
回复
已解决```````
  • 打赏
  • 举报
回复
先把文件一行行的读出来 根据换行分隔符,找到相应行再进行相应的字符串查找操作。。。
schlafenhamster 2013-01-28
  • 打赏
  • 举报
回复
把文件 全部 读入 buffer (注意 加个 0) char *pStartAt=strstr(buffer,“631”); char pEndAt=pStartAt; while((*pEndAt != 13 ) && (*pEndAt != 10 )) pEndAt++;
gz_qmc 2013-01-28
  • 打赏
  • 举报
回复
楼主缺乏的是思路,我看楼上这些人,思维也比较混乱 楼主的问题其实是实现这个过程 第一步,读一行 第二步,查找读到的数据有没有包含要比较的字串 有,那么刚读取的数据就是结果 没有,那么循环,往下再读一行进行比较. 直到文件结束.
天涯洪七公 2013-01-28
  • 打赏
  • 举报
回复
如果数据很多的话,我建议你用fstream读取,我看每个数据都是用$8结尾的,用这个判断 ,当$8前面是你需要的数据时你就保存起来……
rxguoblp 2013-01-28
  • 打赏
  • 举报
回复
CString.Find("$")//查找 CString.Mid(pos1,pos2)//截取
jimette 2013-01-28
  • 打赏
  • 举报
回复
看来只有像一楼那样自己比较! 使用这个
// crt_strcmp.c

#include <string.h>
#include <stdio.h>
#include <stdlib.h>

char string1[] = "The quick brown dog jumps over the lazy fox";
char string2[] = "The QUICK brown dog jumps over the lazy fox";

int main( void )
{
   char tmp[20];
   int result;

   // Case sensitive
   printf( "Compare strings:\n   %s\n   %s\n\n", string1, string2 );
   result = strcmp( string1, string2 );
   if( result > 0 )
      strcpy_s( tmp, _countof(tmp), "greater than" );
   else if( result < 0 )
      strcpy_s( tmp, _countof (tmp), "less than" );
   else
      strcpy_s( tmp, _countof (tmp), "equal to" );
   printf( "   strcmp:   String 1 is %s string 2\n", tmp );

   // Case insensitive (could use equivalent _stricmp)
   result = _stricmp( string1, string2 );
   if( result > 0 )
      strcpy_s( tmp, _countof (tmp), "greater than" );
   else if( result < 0 )
      strcpy_s( tmp, _countof (tmp), "less than" );
   else
      strcpy_s( tmp, _countof (tmp), "equal to" );
   printf( "   _stricmp:  String 1 is %s string 2\n", tmp );
}
小新蜡笔 2013-01-28
  • 打赏
  • 举报
回复
a278401627 2013-01-28
  • 打赏
  • 举报
回复
nizhiqiang1128 这位朋友,用你的代码已经可以的把2提取出来了,谢谢 不过现在的关键问题是怎么把6310A224488610$2$0.0.16$8; 这行读出来
快乐鹦鹉 2013-01-28
  • 打赏
  • 举报
回复
用CStdioFile逐行读取,判断
nizhiqiang1128 2013-01-28
  • 打赏
  • 举报
回复

CString str;
int npos;
str=6310A224488610$2$0.0.16$8;
npos=str.Find('$');
str.delete(0,npos+1);
npos=str.Find('$');
str=str.Left(npos);
此时str的值为第一个$和第二个$之间的字符串。
楼主可用while循环将整行以$分解成若干元素,直接取第二个元素。
a278401627 2013-01-28
  • 打赏
  • 举报
回复
还是没有朋友给出正确完整的代码,本人基础差 希望会的朋友给一下具体代码,非常感谢
内容概要:本文针对无刷直流电机驱动的电子机械制动(EMB)执器,建立了考虑Stribeck摩擦特性的非线性耦合动力学模型,并在Simulink环境中完成了系统级仿真分析。研究综合集成了电机动力学、齿轮传动机构与制动执机构的动力学特性,构建了高保真的机电一体化系统模型。重点引入Stribeck摩擦模型以精确描述低速工况下执器内部存在的静摩擦、粘滞摩擦与库仑摩擦之间的过渡为,有效提升了系统在启停、反向运动等瞬态过程中的动态响应仿真精度。通过多工况仿真验证了模型的有效性,能够准确反映摩擦引起的爬、滞后与定位误差等非线性现象,为EMB系统的高性能控制算法设计(如摩擦补偿、滑模控制)与结构优化提供了高可信度的仿真平台。; 适合人群:从事汽车电子制动系统、电机驱动控制、机电系统建模与仿真研究的研究生、科研人员及工程技术人员,需具备扎实的机械动力学、自动控制理论基础和MATLAB/Simulink仿真能力。; 使用场景及目标:①用于高精度电子机械制动系统的设计验证与性能预测;②为消除摩擦非线性影响的先进控制策略(如自适应控制、智能控制)提供精确的被控对象模型;③深入探究Stribeck摩擦等非线性因素对系统动态性能(如响应延迟、稳态误差)的作用机理; 阅读建议:读者应结合提供的Simulink模型文件,深入剖析Stribeck摩擦模块的数学实现与参数辨识方法,建议通过改变输入指令(如阶跃、正弦)和负载条件进对比仿真,以直观理解非线性摩擦对系统动态特性的影响。

16,550

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧