免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 970 | 回复: 2
打印 上一主题 下一主题

请教一段程序的写法 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-05-19 16:46 |只看该作者 |倒序浏览
需求:
        步骤一:打开一个文件A(结构为每行一条记录,格式为:a b这样的),取出其中的字段,假设取a和b,然后将其赋给两个变量int1和int2,其实我就是想把这个文件按照其结构读到内存中去。
        步骤二:根据int1进行循环,取int1的记录,该文件中可能有多条同一个int1的记录,然后合成一条。

        以上怎么写,哪位能给个大致的框框给我看看,谢谢

论坛徽章:
0
2 [报告]
发表于 2004-05-19 17:50 |只看该作者

请教一段程序的写法

原帖由 "you-boot" 发表:
需求:
        步骤一:打开一个文件A(结构为每行一条记录,格式为:a b这样的),取出其中的字段,假设取a和b,然后将其赋给两个变量int1和int2,其实我就是想把这个文件按照其结构读到内存中去。
        步骤二:根据int1进..........


现在的关键就是我搞不懂文件映射到内存结构是问题,迷糊啊,看书看的没头绪.

论坛徽章:
0
3 [报告]
发表于 2004-05-19 20:25 |只看该作者

请教一段程序的写法

既然文件结构是已知的,就可以按行读取文件内容,并对读到的内容按照格式控制进行处理。

  1. #include <stdio.h>;
  2. #include <string.h>;
  3. #include <stdlib.h>;

  4. char *readln(FILE *stream, char *Buffer, int Bufferlen)
  5. {
  6.   char Letter;
  7.   int Position;
  8.   size_t read;

  9.   read = 0;
  10.   Position = 0;
  11.   Letter = '\0';
  12.   Buffer[0] = Letter;
  13.   while ((Position < Bufferlen) && (Letter != '\n'))
  14.     {
  15.       read = fread(&Letter, 1, sizeof(char), stream);
  16.       Buffer[Position++] = Letter;
  17.       if (Letter == '\n')
  18.         --Position;
  19.     }
  20.   Buffer[Position] = 0;

  21.   if (read == 0)
  22.     return NULL;
  23.   else
  24.     return Buffer;
  25. }

  26. int main()
  27. {
  28.   int LineCount = 1;
  29.   char Buffer1[128];
  30.   FILE *infile;
  31.   int ret;
  32.   int a,b;

  33.   if ((infile = fopen("readln.c","r")) == NULL)
  34.   {
  35.       printf("Can not read \"readln.c\"; aborting.\n");
  36.       return -1;
  37.   }

  38.   while (readln(infile, Buffer1, sizeof(Buffer1)) != NULL)
  39.   {
  40.         ret=sscanf(Buffer1,"%d %d",&a,&b);
  41.         printf("line %d: a=%d, b=%d\n", LineCount++,a,b );
  42.   }

  43.   return 0;
  44. }



  45. readln.c 文件内容如下:
  46. 1 1
  47. 2 2
  48. 3 3
  49. 4 4
  50. 5 5
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP