mygetline 实现

来源:互联网 发布:传感器 java 编辑:程序博客网 时间:2024/06/05 17:46
#include <stdio.h>#include <stdlib.h>#include <string.h>ssize_t mygetline(char **lineptr, size_t *n, FILE *stream){if(*lineptr==NULL){*n=50;*lineptr=malloc(*n);}int ch;int i=0;while(1){ch=fgetc(stream);if(ch==EOF)return -1;if(i > *n){*n+=50;*lineptr=realloc(*lineptr,*n);}*(*lineptr+i)=ch;i++;if(ch=='\n'){*(*lineptr+i)='\0';return i;}}return i;}void mygetline_free(char **lineptr){if(*lineptr != NULL){free(*linefree);}}int main(int argc,char **argv){FILE *fp;char *line = NULL;size_t line_size = 0;if(argc < 2){fprintf(stderr,"Usage...\n");exit(1);}fp = fopen(argv[1],"r");if(fp == NULL){perror("fopen()");exit(1);}while(1){if(mygetline(&line,&line_size,fp) < 0)break;printf("line_size = %d\n",line_size);printf("%d\n",strlen(line));printf("%s\n",line);}fclose(fp);mygetline_free(line);exit(0);}

原创粉丝点击