关于getline函数?

void read(int flag)
{
ifstream infile("E:\\phone.txt",ios::in);
if(!infile)
{
cout<<"phone.dat can not open.\n";
abort();
}
i=0;
char temp1[max],temp2[max],temp3[max],temp4[max];
do
{
s[i]=new per;
infile.getline(temp1,20);
infile.getline(temp2,20);
infile.getline(temp3,2);
infile.getline(temp4,2);
strcpy((*s[i]).name,temp1);
strcpy((*s[i]).phone,temp2);
(*s[i]).sex=temp3[0];
(*s[i]).cata=temp4[0];
i++;
}while(!infile.eof());
j=i-1;
break;
}
}

谁能告诉我,代码里的getline函数的含义,以及其用法??谢谢!

九州编程
浏览 941回答 3
3回答

UYOU

 getline函数  getline不是C库函数,而是C++库函数。它会生成一个包含一串从输入流读入的字符的字符串,直到以下情况发生会导致生成的此字符串结束。1)到文件结束,2)遇到函数的定界符,3)输入达到最大限度。  使用条件  linux标准C中使用条件:  #define _GNU_SOURCE  #include <stdio.h>  函数声明:  ssize_t getline(char **lineptr, size_t *n, FILE *stream);  返回值  成功:返回读取的字节数。  失败:返回-1。  lineptr:指向存放该行字符的指针,如果是NULL,则有系统帮助malloc,请在使用完成后free释放。  n:如果是由系统malloc的指针,请填0  stream:文件描述符  应用举例:  #define _GNU_SOURCE  #include <stdio.h>  #include <stdlib.h>  int main(void)  {  FILE * fp;  char * line = NULL;  size_t len = 0;  ssize_t read;  fp = fopen("/etc/motd", "r");  if (fp == NULL)  exit(EXIT_FAILURE);  while ((read = getline(&line, &len, fp)) != -1)  {  printf("Retrieved line of length %zu :\n", read);  printf("%s", line);  }  if (line)  free(line);  exit(EXIT_SUCCESS);  }

Helenr

读取一行可以看你上述代码infile.getline(buff, len);一个参数是buffer, 后面一个是长度
打开App,查看更多内容
随时随地看视频慕课网APP