繁体   English   中英

逐行读取文本文件并将每行保存在缓冲区中,而不管每行的数据类型和长度

[英]Read a text file line by line and save each line in the buffer irrespective of data type and length of each line

我想读取文本文件的一行,将其保存到缓冲区,通过udp套接字发送缓冲区,然后继续阅读第二行,依此类推。

到目前为止,因为我知道要从文本文件中读取的文本的数据类型,所以我一直在使用

fscanf()函数

从文本文件中读取每一行。 但现在我不知道数据类型,因此我不再使用此功能。 还有其他方法可以逐行读取文本文件。

注意: 每行的长度可能会有所不同。

在不知道数据类型的情况下,你永远无法知道你将要读入变量的内容......让我们看一下,你提到每行的长度可能会有所不同,对吗? 所以我们可以假设你的文本文件包含...文本。 也就是说,数字128不会由单个整数表示,而是由您将读取的三个字符表示,然后解析为整数。

也就是说,除了构建一个解析器之外没有很多选择(你读取每一行并尝试根据你读过的字符来猜测它是什么,比方说,只有数字吗?是否只有数字但是有一个点?是否只有az字符?,它们都是?)不是100%可靠或只是尝试事先总是知道数据类型(比如,保存从数据类型的每一行读取的第一个字符)在写文件时)。

如果您的文本文件不是真正的文本文件,而是二进制模式,则会发生一个非常不同的故事。 如果是这样的话......好吧,除了事先知道数据类型之外没什么可做的。

这是一个方便的代码,我发现将数据读取为二进制

FILE *fp;
fp=fopen("c:\\test.bin", "r");
char *x = new char[10]; 
//size_t fread(void *ptr, size_t size_of_elements, size_t number_of_elements, FILE      *a_file);
fread(x, sizeof(x[0]), sizeof(x)/sizeof(x[0]), fp);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM