fread原型函数
fread的原型函数为
size_t fread ( void *buffer, size_t size, size_t count, FILE stream)
ptr – 这是指向带有最小尺寸 sizenmemb 字节的内存块的指针。
size – 这是要读取的每个元素的大小,以字节为单位。
nmemb – 这是元素的个数,每个元素的大小为 size 字节。
stream – 这是指向 FILE 对象的指针,该 FILE 对象指定了一个输入流
返回值 – 成功读取的元素总数会以 size_t 对象返回,size_t 对象是一个整型数据类型。如果总数与 nmemb 参数不同,则可能发生了一个错误或者到达了文件末尾。
fopen原型函数
fopen的原型函数为
FILE *fopen(const char *filename, const char *mode);
filename-- 这是 C 字符串,包含了要打开的文件名称。
mode-- 这是 C 字符串,包含了文件访问模式。
fopen在读取文件时,本质上,它只认识char和二进制,也就是说所有含b的是以二进制读取或写入,其他的全都是能且只能当做char读取,然后再将char转换为想要的类型。
比如 txt文件中写入的是
getline函数
为了读取,可以使用getline读取一行,如下程序
ifstream readFile("config.txt");
char buff[] = "";
int cnt = 0;
while (readFile.getline(buff, 1024))
{
// cout << buff << endl;
cnt ++;
if (cnt == 1)
Raw_sample_rate = atoi(buff);
else if (cnt == 2)
db = atoi(buff);
}
这里是为了简单,所以一行写一个数字。注意atoi和itoa的使用很方便。
fopen函数
也可以使用fopen
FILE*config_fp = fopen("config.txt");
char* aRaw_sample_rate = NULL;
aRaw_sample_rate = ( char * )malloc( 5*sizeof(char) + 1 );//分配空间
memset ( aRaw_sample_rate, 0, 5*sizeof(char) + 1 ); //初始化
fread( aRaw_sample_rate, 5, 1, config_fp );
Raw_sample_rate = atoi( aRaw_sample_rate );
free( aRaw_sample_rate );
fclose( config_fp );
注意fopen和fclose要配合使用。
其他情况
以下情况需要单独考虑,后续再详细讨论。