C 如何跟踪执行了多少读/写操作。。。?
对于I类,“开发一个C程序,将输入文件复制到输出文件,并计算读/写操作的数量。”我知道如何将输入文件复制到输出文件,但我不完全确定如何跟踪执行了多少读/写操作。该程序应使用不同的缓冲区大小重复复制,并输出使用每个缓冲区大小执行的读/写操作数的列表。我只是不知道如何计算r/w操作的部分。一个人怎么能这样做呢?先谢谢你 以下是我当前的代码(已更新):C 如何跟踪执行了多少读/写操作。。。?,c,file-io,buffer,read-write,C,File Io,Buffer,Read Write,对于I类,“开发一个C程序,将输入文件复制到输出文件,并计算读/写操作的数量。”我知道如何将输入文件复制到输出文件,但我不完全确定如何跟踪执行了多少读/写操作。该程序应使用不同的缓冲区大小重复复制,并输出使用每个缓冲区大小执行的读/写操作数的列表。我只是不知道如何计算r/w操作的部分。一个人怎么能这样做呢?先谢谢你 以下是我当前的代码(已更新): 我原以为写操作是12…但我不确定…每次调用执行读写操作的函数时,都需要增加一个变量。您可以通过创建一个封装标准i/o函数的函数来实现这一点 例如,将f
我原以为写操作是12…但我不确定…每次调用执行读写操作的函数时,都需要增加一个变量。您可以通过创建一个封装标准i/o函数的函数来实现这一点 例如,将fread替换为以下内容:
size_t fread_count(void *p, size_t size, size_t num, FILE *f){
iocount++;
return fread(p, size, num, f);
}
iocount必须在范围内(例如,全局)
如果需要单独计算读写次数,请使用单独的变量。
一个用于递增读取,另一个用于递增写入。
-编辑-
由于您使用的是write()和read(),因此可以很容易地创建一个等价项
与上面类似的功能,但使用写和读而不是fwrite和fread来帮助尝试不同的缓冲区大小: 1) 将打开/读取/写入/关闭和字符缓冲区[]、读取/写入计数器、计数器的最终printf语句等放入单独的函数中 2) 在main()中,添加一个包含要尝试的缓冲区大小的表 3) 从main()调用新函数,
包括一个指示要使用的缓冲区大小的参数,因此,如果我的测试文件包含以下内容:“test one two”,那么如果我使用一个变量,并且我的缓冲区大小为1,那么应该返回什么@Smeezekitty这些建议的函数可以/应该有另一个参数,即计数器的地址,那么计数器就不需要是“全局的”(使用“静态”修饰符实际上是文件全局的)@PhilectorIV我认为它应该是25。读取的每个字节一个,写入的每个字节一个。在本节末尾尝试读取时,另加一个file@user3629249你是对的。从长远来看,这是一种更好的方法,可以避免代码被全局变量弄乱。为了简单起见,我使用了全局变量示例。但是使用指针是更好的一般编码实践。代码缺失#包括所有读/写操作完成后发布的代码无法关闭文件。main()函数表示返回int,但代码缺少“返回值;”正在使用语句'FILE_MODE',但从未定义编译时,始终启用所有警告,然后修复警告。警告来自编译器的指示,表明编译器认为某些代码可能是错误的
read/write count: 26
read = 13
write = 13
Process returned 0 (0x0) execution time : 0.003 s
Press ENTER to continue.
size_t fread_count(void *p, size_t size, size_t num, FILE *f){
iocount++;
return fread(p, size, num, f);
}