c语言在txt查找文本,返回相同的行的数据

数据内容如下:在txt文件内2001Gas3868202192562002Epower3258803756612003Epower9126153033152004Epow... 数据内容如下:在txt文件内
2001 Gas 38682021 9256
2002 Epower 32588037 5661
2003 Epower 91261530 3315
2004 Epower 50706106 9374
2005 Gas 70156146 3285
2006 Epower 40124975 1869
2007 Water 41107763 5263
2008 Gas 50834839 4841
2009 Epower 16818779 6822
例如,输入ROOM ID = 2001,就输出ID=2001,STYLE=gas,ID=38682021,BOTH=9256;
展开
 我来答
cdyzxy
2018-12-29 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.4万
采纳率:85%
帮助的人:3752万
展开全部
#include<stdio.h>
struct RECs { unsigned int uRoomID,uID,uBoth; char sStyle[20]; };
void main() { struct RECs a; FILE *fp; char buffer[256]; unsigned int r; int b;
  if ( fp=fopen("c:\\room.txt","r") ) {
    while ( 1 ) {
      printf("请输入ROOM ID: "); scanf("%u",&r); if ( r==0 ) break;
      fseek(fp,0L,SEEK_SET); b=0;
      while ( !feof(fp) ) {
        fgets(buffer,255,fp); sscanf("%u%s%u%u",&a.uRoomID,a.sStyle,&a.uID,&a.uBoth);
        if ( uRoomID==r ) {
          printf("ID=%u,STYLE=%s,ID=%u,BOTH=%u\n",a.uRoomID,a.sStyle,a.uID,a.uBoth);
          b=1;
          break;
        }
      }
      if ( b==0 ) printf("没有该房间记录。\n"); else printf("\n");
    }
    fclose(fp);
  } else printf("无法打开文件读取数据。\n");
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
CHENGWENGJI
2018-12-29 · TA获得超过412个赞
知道小有建树答主
回答量:667
采纳率:66%
帮助的人:295万
展开全部

随便写写,有很多可以优化的地方,错误处理什么的,..

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

struct DATA {
    int id1;
    char style[10];
    int id2;
    int both;
};

DATA find_data(const char *path,int id1) {
    DATA data;
    FILE *file = fopen(path, "r");

    while (fscanf(file, "%d %s %d %d", &data.id1, data.style, &data.id2, &data.both) > 0) {
        if (data.id1 == id1) {
            break;
        }
    }

    fclose(file);

    return data;
}

void print_data(const DATA *data) {
    printf("ID=%d STYLE=%s ID=%d BOTH=%d\n", data->id1, data->style, data->id2, data->both);
}

int main() {
    const char *path = "data.txt";

    int id;
    DATA data;
    while (1) {
        printf("输入id\n");
        scanf("%d", &id);
        data = find_data(path, id);
        print_data(&data);
    }

    return 0;
}

注意如果用C编译器编译估计会有点问题,你改改就行了

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2019-01-04
展开全部
静、纯洁、妩媚、优雅的荷花,来一场只有
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
唯之平泽
2018-12-28
知道答主
回答量:20
采纳率:0%
帮助的人:5.2万
展开全部
可以去csdn上问问呢
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式