C++中怎么逐行读取数据

C++中怎么逐行读取数据,第1张

可以使用C++的库函数getline实现。

getline会生成一个包含一串从输入流读入的字符的字符串,直到以下情况发生会导致生成的此字符串结束

1)读到文件结束符;

2)遇到函数指定的结束符;

3)输入达到最大限度。

getline有两种重载:

istream &getline( char *buffer, streamsize num )

istream &getline( char *buffer, streamsize num, char delim )

参数说明:

buffer: 读取的数据将存在buffer中。

num:最多读取num个字符。即之前所说的最大限度。

delim:结束符,当遇到指定的结束符时将结束输入。在第一种重载中,结束符为\n,即遇到换行结束。

所以要实现整行读取,使用第一种重载就可以了。示例代码如下:

#include <iostream>

using namespace std

int main()

{

    char buf[1024]//存储的buf。

    while(getline(buf,sizeof(buf)))//读取一行。

    {

        cout << "read line:" <<buf<<endl//输出读取到的数据。

    }

    

    return 0

}

关键技巧: 每行数据个数随机,可用 c = fgetc(fin) ungetc(c,fin) 检查是否读到 换行符或文件结束符。

例如:

a.txt

1 2 3 45 56

67

8 9 10

至于记录每行数据个数,存放到数组,等等,可以自己补充完善。

程序:

#include <stdio.h>

int main( )

{

FILE *fin

int a,c

fin=fopen("a.txt","rw")

while(1){

c = fgetc(fin)

if (c==EOF) break

if (c=='\n') {printf("\n==========\n")continue}

ungetc(c,fin)

fscanf(fin,"%d",&a)printf("%d ",a)

}

fclose(fin)

return 0

}

C语言逐行读取文件内容 ,参考代码如下:

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#define MAX_LINE 1024

int main()

{

 char buf[MAX_LINE]  /*缓冲区*/

 FILE *fp            /*文件指针*/

 int len             /*行字符个数*/

 if((fp = fopen("test.txt","r")) == NULL)

 {

 perror("fail to read")

 exit (1) 

 }

 while(fgets(buf,MAX_LINE,fp) != NULL)

 {

 len = strlen(buf)

 buf[len-1] = '\0'  /*去掉换行符*/

 printf("%s %d \n",buf,len - 1)

 }

  return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/6784431.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-28
下一篇 2023-03-28

发表评论

登录后才能评论

评论列表(0条)

保存