免费注册 查看新帖 |

Chinaunix

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

[C] 才学习C语言,写了个malloc的程序,大家帮忙看下是否严谨? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-09-03 21:26 |只看该作者 |倒序浏览
程序功能:
    读取某个文件中的字符串,以行为单位,放入一个数组中,实际就是个字符串的数组。

  1. #include<stdio.h>
  2. #include<string.h>
  3. main()
  4. {
  5.   char *ca[100];
  6.   int lines;
  7.   int i = 0;
  8.   lines = getline(ca,10);
  9.   if (lines > 0) {
  10.      for (i = 0; i < lines;i++)
  11.      {
  12.         printf("-------[%s]------\n",ca[i]);
  13.      }
  14.   
  15.      for (i = 0; i<lines;i++)
  16.      {
  17.         free(ca[i]);
  18.      }
  19.   } else {
  20.      printf("read error");
  21.   }
  22. }  
  23.   int getline(char *lineptr[] ,int maxlines)
  24.   { int nlines = 0;
  25.     int readchar;
  26.     char config[100];
  27.     FILE *fp;
  28.     char *p;
  29.     fp = fopen("read.txt","r");
  30.     int i = 0;
  31.     int j = 0;
  32.     while ((readchar = getc(fp)) != EOF){
  33.        if (readchar == '\n') {
  34.         
  35.            config[i] = '\0';
  36.            p = (char*)malloc(30);
  37.            if (!p || nlines == maxlines)
  38.            {
  39.                for (j=0;j<nlines;j++)
  40.                    free(lineptr[j]);
  41.                return -1;
  42.            }
  43.            else {
  44.                strcpy(p, config);
  45.                lineptr[nlines++] = p;
  46.                i = 0;
  47.            }   
  48.        } else{
  49.          config[i++] = readchar;        
  50.        }
  51.     }
  52.     return nlines;
  53.   }

复制代码

论坛徽章:
0
2 [报告]
发表于 2006-09-04 11:47 |只看该作者
你考虑两种情况下你的程序是否正确:1。当一行内的字符数大于30的时候。 2 当文件的最后一行,不是以回车结尾的时候。

论坛徽章:
0
3 [报告]
发表于 2006-09-04 12:29 |只看该作者
好像半个汉字还可能是'\n'

论坛徽章:
0
4 [报告]
发表于 2006-09-04 21:35 |只看该作者

多谢两位!

我会按大家说的测试下。
另外我也比较关心,这个free的函数调用是否合理。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP