假定文件结构为:1E1F 0309 luan7 8 zao
2E2F 1518
begin
12 39692
12 39712
9 39724
end
begin
14 39692
8 39724
end
luan7 8 zao
qi qi guai guai
begin
312 39692
142 39712
95 39724
end
含多段 begin, end 数据
#include #include
main( ) {
FILE *fin;
int a[1000],b[1000],n=0,i;
char one_line[80];
fin=fopen("abc.txt","r");
if (fin==NULL){printf("open file errorn");return 0;}
Lab1:while(1){
if ( fgets(one_line,80,fin)==NULL){
printf("Can not fund begin any moren");goto Lab2;}
if (strncmp(one_line,"begin",5)==0)break;
}
for (i=0;i
if (strncmp(one_line,"end",3)==0)break;
sscanf(one_line,"%d %d",&a[n],&b[n]);
n++;
}
goto Lab1;
Lab2: fclose(fin);
printf("I read:n");for (i=0;ireturn 0;
}
fgets 读取每一行数据 然后利用 strchr 依次查找 分号 ; 出现的位置 然后做相应的转换就可以了!
这是我写的一个读取指定 字符串的一个例子 你参照这改下就好了 字符串转浮点数 函数 atof
#include
#include
#define N 10
int readstr(const char* str,char p[][128],int plen,int savepos);
int main()
{
char str[]="2012/10/12;123456.0;456123.0";
char date[N][128]={0};
int len=readstr(str,date,N,0);
for (int i=0;i { printf("%sn",date[i]); } return 0; } int readstr(const char* str,char p[][128],int plen,int savepos) { if(plen
{ printf("数组过小,请更改存储位置!"); return 0; } static int len=0; char *find=strchr(str,';'); if(find==NULL) { strcpy(p[savepos],str); len++; return len; } else { strncpy(p[savepos],str,find-str); len++; readstr(find+1,p,N,len); } return len; } 用fgets读入一行,用sscanf 读出第一列数据 下面假定第一列数据作为字符串,用 sscanf(buf,"%s", 。。。格式读。 类似,整型用 %d 浮点用 %f %lf .... #include #include main(){ char buf[100]; char col[100][30]; int n=0; FILE *fp = fopen("a.txt", "r"); while ( fgets(buf, 100, fp) != NULL) { if ( sscanf(buf,"%s",col[n]) == 1){printf("%sn", col[n]); n++; }; } return 0; } 如果要读每行第一个数,(只读一位数 用 格式 %1d): int x[100]; ... while ( fgets(buf, 100, fp) != NULL) { if ( sscanf(buf,"%1d",&x[n]) == 1){ printf("%dn",x[n]);n++;};C语言如何在txt中读取指定字符串的下一行数据
以上是如何在C语言中读取TXT文档中begin和end之间的两行字符数据的详细内容。更多信息请关注PHP中文网其他相关文章!