为了账号安全,请及时绑定邮箱和手机立即绑定

关于getline函数?

关于getline函数?

九州编程 2019-03-06 10:06:23
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函数的含义,以及其用法??谢谢!
查看完整描述

3 回答

?
UYOU

TA贡献1878条经验 获得超4个赞

 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);
  }



查看完整回答
反对 回复 2019-03-26
?
Helenr

TA贡献1780条经验 获得超3个赞

读取一行
可以看你上述代码
infile.getline(buff, len);
一个参数是buffer, 后面一个是长度

查看完整回答
反对 回复 2019-03-26
  • 3 回答
  • 0 关注
  • 867 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信