一个读文件的函数,头都晕了,请指点下?

whizstorm 2005-10-22 10:41:00
文件格式如下:
:xxx\n
>YYY F F\n
>YYYY F F\n
.
.
:xxx\n
>YYY F F\n
...
:后是一个字符串,记录某个样本名,\n表示回车,由fprintf(pf, ":%s\n", sMb);生成
>表示属性名,F表示浮点树,两个数之间有空格,由fprintf(pf,">%s %0.3f %0.3f\n", sMbz,f1,f2);生成的.属性的条数不确定的,可能没有最多10条,现在要写个函数,找到与XXX对应的属性,并读出来.

我写函数
int ReadInfoFromFile(const char* file_name,const char smbzl,char SCR[][])
{
FILE *fp = fopen(mid_file_name,"rb");
if(fp==NULL) return 0;
int elements = 0;
long pos = ftell( fp );
char cmd[81];
int i;
float sim1,sim2;
while(1)
{
int c = fgetc( fp );
if(c == ':')
{
fscanf( fp, "%s/n",cmd);
if(0 == strcmp(smbzl,cmd))
{
do
{
c = fgetc( fp );
if(c=='>')
{fscanf(fp,"%s %f %f\n",SCR[i],sim1,sim2);i++;}
}
while(c==':'||c==EOF);
}
else if (c == EOF) break;
}
}
fclose(fp);
return 1;
}
都晕了,请高手指点下!
...全文
247 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaocai0001 2005-10-23
  • 打赏
  • 举报
回复
fscanf( fp, "%s/n",cmd);
把你fscanf()格式串中的\n都去掉看看行不行
whizstorm 2005-10-23
  • 打赏
  • 举报
回复
文件的具体数据如下:

:112
:1121
>1122 0.967 0.966
>1123 0.967 0.966
:1122
>1121 0.966 0.967
>1123 1.000 1.000
>1121 0.966 0.967
>1122 1.000 1.000
.
.
.
xiaocai0001 2005-10-23
  • 打赏
  • 举报
回复
被 你的文件格式给弄晕了
wuwen19 2005-10-23
  • 打赏
  • 举报
回复
你按照这个模式试一下,

1.txt 文本如下,
:112
:1121
>1122 0.967 0.966
>1123 0.967 0.966
:1122
>1121 0.966 0.967
>1123 1.000 1.000
>1121 0.966 0.967
>1122 1.000 1.000


程序
#include "stdio.h"

main()
{
FILE *fp;

struct {
char buf[1024];
char buf1[1024];
char buf2[1024];
char buf3[1024];
}t_s ;


if ( ( fp=fopen("1.txt","r") ) == NULL )
{
printf("fopen 1.txt error!\n");
return;
}

memset(&t_s,0x00,sizeof(t_s));
while ( fgets(t_s.buf,sizeof(t_s.buf),fp) != NULL )
{
t_s.buf[strlen(t_s.buf) - 1] = 0;

printf("t_s.buf = <%s>\n",t_s.buf);
printf("t_s.buf[0] = <%c>\n",t_s.buf[0]);

if ( t_s.buf[0] == ':' )
{
sscanf(t_s.buf+1,"%s",t_s.buf1 );
printf("t_s.buf1 = <%d>\n",atoi(t_s.buf1));
}
else if ( t_s.buf[0] == '>' )
{
sscanf(t_s.buf+1,"%s%s%s",t_s.buf1,t_s.buf2,t_s.buf3);
printf("t_s.buf1 = <%d>\n",atoi(t_s.buf1));
printf("t_s.buf2 = <%.2f>\n",atof(t_s.buf2));
printf("t_s.buf3 = <%.2f>\n",atof(t_s.buf3));
}

memset(&t_s,0x00,sizeof(t_s));
}

fclose(fp);
return;
}


看看能不能达到你的要求。
printf部分你可以自己改成你自己要实现的东西。
jixingzhong 2005-10-23
  • 打赏
  • 举报
回复
可以考虑把
fscanf()
换成
sscanf() ...
steel007 2005-10-22
  • 打赏
  • 举报
回复
你一行一行的读,然后再parse
fiftymetre 2005-10-22
  • 打赏
  • 举报
回复
mark,我也晕了
标题SpringBoot中小学教育辅导系统设计与实现AI更换标题第1章引言介绍中小学教育辅导系统的研究背景、意义、现状以及论文的方法和创新点。1.1研究背景与意义分析当前中小学教育辅导的现状及系统开发的重要性。1.2国内外研究现状探讨国内外中小学教育辅导系统的发展现状与趋势。1.3研究方法以及创新点概述本文的研究方法,阐述系统的创新点。第2章相关理论介绍SpringBoot框架及教育辅导系统相关理论。2.1SpringBoot框架概述介绍SpringBoot框架的特点、优势及在系统开发中的应用。2.2教育辅导系统理论基础阐述教育辅导系统的基本理论,包括学习理论、教学理论等。2.3系统开发相关技术概述系统开发过程中涉及的其他关键技术,如数据库技术、前端技术等。第3章系统需求分析与设计对中小学教育辅导系统进行详细的需求分析与设计。3.1需求分析分析系统的功能需求、性能需求及用户需求。3.2系统架构设计设计系统的整体架构,包括前后端分离架构、模块划分等。3.3数据库设计设计系统的数据库结构,包括表结构、关系等。第4章系统实现详细介绍中小学教育辅导系统的实现过程。4.1开发环境搭建介绍系统开发所需的环境配置及工具选择。4.2功能模块实现阐述各个功能模块的实现过程,包括用户管理、课程管理、学习资源管理等。4.3系统测试与优化对系统进行测试,包括单元测试、集成测试等,并对系统进行优化。第5章系统应用与效果分析对中小学教育辅导系统的应用效果进行分析。5.1系统应用情况介绍系统在实际应用中的情况,包括用户反馈、使用数据等。5.2效果评估与分析从教学效果、用户体验等方面对系统进行评估与分析。5.3对比方法分析通过与传统教育辅导方式对比,凸显系统优势。第6章结论与展望总结中小学教育辅导系统的设计与实现成果,并展望未来的研究方向。6.1研究结论概括系统的主要功能、特点及创新点。6.2展望指出系统
内容概要:本文详细介绍了一种欠定盲源分离方法,并深入探讨其在模态识别中的应用,重点依托Matlab代码实现相关算法流程。该方法针对传感器数量少于源信号数量的“欠定”情形,通过稀疏表示、时频分析与独立成分分析(ICA)等核心技术,从混叠振动信号中高效分离出原始模态信号,进而提升结构模态参数识别的精度与鲁棒性。研究紧密结合工程实际,适用于复杂结构的振动分析、故障诊断与健康监测,为信号处理与结构动力学交叉领域提供了可复现的技术路径。; 适合人群:具备信号处理、线性代数及Matlab编程基础的研究生、科研人员与工程技术人员,尤其适合从事机械、土木、航空航天等领域中结构动力学分析与状态监测的相关工作者。; 使用场景及目标:① 掌握欠定盲源分离的基本理论与算法实现流程;② 将该方法应用于实际工程中的模态参数识别,如桥梁、风机叶片等大型结构的振动信号分离与故障特征提取;③ 借助提供的Matlab代码进行算法复现、性能测试与二次开发,服务于科研论文撰写、项目攻关或工业检测系统开发。; 阅建议:建议者结合理论推导与Matlab代码同步研,重点关注信号混合模型构建、稀疏成分提取、时频掩膜设计及分离效果评估等关键环节,并尝试在真实或仿真数据集上进行实验验证与参数调优,以深入理解方法的适用边界与优化潜力。
源码链接: https://pan.quark.cn/s/3302e37bc21e 【热电偶测温机制】 热电偶作为一类普遍应用的温度感应装置,其运行机制依托于塞贝克现象,具体而言,当由两种不同金属或半导体材料A与B构成的闭合回路的两端存在温度梯度时,回路内部会感应出电压。该电压值与两个接点间的温差呈现正相关性。K型热电偶即为其中一种应用广泛的型号,该类型热电偶主要由镍铬(NiCr)以及镍铝(NiAl)合金构成,并展现出优良的一致性和精确度。 【MAX6675芯片概述】 MAX6675是由Maxim公司研发的一种高度集成的热电偶接口组件,该组件内嵌了冷端补偿及数字转换功能。它能够将热电偶产生的微弱电压信号转化为数字形式的数据,从而便于微控制器进行取和运算处理。该芯片内部配置了12位Σ-Δ型模数转换器,能够提供高等级的温度测量精度,并且配备了SPI串行通信接口,有助于与各类微控制器设备进行顺畅的数据交换。 【C语言编程实践】 在采用C语言进行编程时,与MAX6675芯片进行交互一般遵循以下流程: 1. 进行SPI接口的初始化工作:设定SPI时钟的速率、操作模式以及数据传输的方向,以此确保与MAX6675的通信协议相吻合。 2. 发送指令以获取温度信息:经由SPI接口发送用于取温度的指令,芯片将会反馈包含当前温度数值的12位二进制数据。 3. 实施数据解析操作:接收并分析返回的二进制数据,将其转化为具体的温度数值。值得注意的是,MAX6675所提供的温度数据为14位格式,其中包含两位用于表示符号位,剩余的12位则代表实际温度值。 4. 执行冷端温度补偿:由于热电偶所测量的是温度差值,因此还需考虑芯片自身的温度(即冷端温度),可以通过额外的温度感应装置或进行...

70,039

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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