C语言读取TXT文件的问题

来源:百度知道 编辑:UC知道 时间:2024/05/13 16:26:53
txt文件如下
123 2345 345// 333 52
4525 565/ 552=
556 65 6575 643 313
54 646 65 65/ 58 2547=
656 6533 656// 665
565 333 5686=
……

每一段数据以“=”结尾,“=”与最后的数字间没有空格,一段数据可能有多行。
当一段数据中有数“333”时,则读取这数据段的第一个数据;没有“333”则不管。“333”在一段数据中的位置不固定。

如上有3段数据,第1、3段数据中有数“333”,就要记录数据段的第一个数据“123”和“656”。

给出代码加100分
用C语言编写。

123 75635 345// 333 52
4525 565/ 70002 552=
数据段中有“333”,并且在“333”后如有一7开头的5位数,如上所示“70002”(在“333”前面的“75635”不用管),则显示这一数据段中的第一个数据“123”以及7开头的数据“70002”中的后4位数据,但0不显示,“70002”就显示为“2”;如果是“70000”就为“0”。所以这段数据记录“123”和“2”。
如果数据段没有“333”,则这段数据不处理;有“333”,但“333”后无7开头的5位数,也不处理。

估计有些麻烦,我也只有这么多分,全送出去。

#include <stdio.h>
#include <stdlib.h>
FILE *fin;

void main()
{
char namein[]="abcd.txt";
unsigned char one_line[200];
char str[16];
int i,j,k;
int l,v1,v7;
int flag;

if ( (fin = fopen(namein,"r") ) == NULL ) {
printf("\007Cann't open file: %s ", namein);exit(1);
};

loop_1:
for (i=0;i<200;i++){
one_line[i] = fgetc(fin);
if (feof(fin) != 0 ) {goto Lab_eof;};
if (one_line[i] == '=') {l=i; break;};
if (one_line[i] == '/') one_line[i] = ' ';
};

flag = 0;
i=0;j=0;
while (i<l){
sscanf(&one_line[0]+i,"%s",&str);
j = strlen(str);
sscanf(str,"%d",&k);
if (k == 333) flag = 1;
if (flag == 1 && k >= 70000 && k < 80000){
v7 = k - 70000;
sscanf(&one_line[0],"%d",&v1);
printf("%d %d\n",v1,v