我初学c,还不太会用,用下面这个函数读取文本文件中的数据,但是每次只能读一部分,不能把每行数据都读完,如何能控制读取每一行的全部数据,并且读完所有的行?
我每行的数据格式是这样的:1,01107,煤气锅炉房,10,1,%,0,40,0,0.50,0.50,0.50
#pragma option(mbcs)
#include "apdefap.h"
void onClick(char* lpszPictureName,char* lpszObjectName,char* lpszPropertyName)
{
FILE * datei;
char t[20];
char x[20];
char* z;
datei=fopen("D:\\aa.txt","r");
if(datei!=NULL)
{
z=fgets(t,20,datei);
strncpy(&x[0],&t[0],strlen(&t[0])-1);
SetTagChar("text1",x);
z=fgets(t,20,datei);
SetTagChar("text2",x);
}
fclose(datei);
}
最佳答案
楼主可以用fscanf函数来读取一行文本,格式字符串可以"%[^\n]",表示读文本直到回车符才停止,这样不论一行文本有多长都可以读完整。
例如:fscanf(datei,"%[^\n]",t); 读取文件datei从当前位置直到回车符,并将结果写到t字符数组,楼主的程序中繁琐了点,还有点错误。
=====================
float int 也是可以的写到数组里面去的。先读一行数据到t数组。用sscanf(t,"%d,%f",&a,&b)将t字符串中的数据按照格式输出到相应的变量a和b。不过要注意“”里面的格式字符串必须和t数组的格式相匹配。
提问者对于答案的评价:
我试试
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc277238.html