【发布时间】:2015-03-14 05:40:43
【问题描述】:
对于我的课程,“开发一个 C 程序,将输入文件复制到输出文件并计算读/写操作的数量。”我知道如何执行将输入文件复制到输出文件的操作,但我不完全确定如何跟踪执行了多少读/写操作。该程序应该使用不同的缓冲区大小重复复制,并输出每个缓冲区大小执行的读/写操作数的列表。我只是不确定如何计算 r/w 操作。一个人怎么能这样做呢?提前谢谢你。
这是我当前的代码(更新):
#include <stdio.h>
#include "apue.h"
#include <fcntl.h>
#define BUFFSIZE 1
int main(void)
{
int n;
char buf[BUFFSIZE];
int input_file;
int output_file;
int readCount = 0;
int writeCount = 0;
input_file = open("test.txt", O_RDONLY);
if(input_file < 0)
{
printf("could not open file.\n");
}
output_file = creat("output.txt", FILE_MODE);
if(output_file < 0)
{
printf("error with output file.\n");
}
while((n = read(input_file, buf, BUFFSIZE)) > 0)
{
readCount++;
if(write(output_file, buf, n) == n){
writeCount++;
}else{
printf("Error writing");
}
}
if(n < 0)
{
printf("reading error");
}
printf("read/write count: %d\n", writeCount + readCount);
printf("read = %d\n", readCount);
printf("write = %d\n", writeCount);
}
对于文本文件:测试一二
结果是:
read/write count: 26
read = 13
write = 13
Process returned 0 (0x0) execution time : 0.003 s
Press ENTER to continue.
我原以为写的是 12...但我不确定...
【问题讨论】:
-
缺少代码#include
-
所有读/写操作完成后,贴出的代码无法关闭文件。
-
main() 函数声明它返回一个 int,但是,代码缺少“返回值”;声明
-
'FILE_MODE' 正在使用,但从未定义
-
编译时,始终启用所有警告,然后修复警告。警告来自编译器的指示,表明编译器认为某些代码可能是错误的
标签: c file-io buffer read-write