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



我想读取一行文本文件,将其保存到缓冲区,通过udp套接字发送缓冲区,然后去读取第二行,等等。

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

fscanf ()

从文本文件中读取每一行。但现在我不知道数据类型,所以我不可能再使用这个函数了。还有其他的方法来逐行读取文本文件吗?

注意:每行的长度可以不同

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

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

如果不知道数据类型,你永远不知道你将在变量中读取什么…让我们看看,你提到每条线的长度可以变化,对吧?所以我们可以假设你的文本文件包含…文本。也就是说,数字128不会由单个整数表示,而是由三个字符表示,您可以读取这些字符,然后将其解析为整数。

也就是说,没有太多的选择,但建立一个解析器(你读取每一行,并尝试猜测它是基于你读的字符,说,只有数字吗?只有数字,但有一个点吗?是否只有a-z字符?),这将不是100%可靠的,或者只是尝试事先知道数据类型(例如,在写文件时保存从每行读取的第一个字符作为数据类型)。

如果您的文本文件不是真正的文本,而是二进制模式,那么情况就大不相同了。如果是这样的话……嗯,除了事先知道数据类型之外,没有什么可做的。

最新更新