【发布时间】:2011-05-23 10:12:50
【问题描述】:
用户应该在命令行中输入一些文件名,程序将从argv[]数组中读取每个文件名。我必须执行错误检查等。
我想读取每个文件名。例如,如果 argv[2] 是 'myfile.txt',程序应该读取 'myfile.txt' 的内容并将值存储在char buffer[BUFSIZ] 中,然后将buffer 的内容写入另一个文件。
但是在写入内容之前,程序还应该写入文件名和大小。这样以后可以轻松提取文件。有点像tar 函数。
我写buffer内容的文件,根据用户添加的文件数量,应该是这样的字符串:
myfile.txt256Thisisfilecontentmyfile2.txt156Thisisfile2content..............
我的问题是
1) 如何使用write() 语句将argv[2] 的值写入文件,因为在写入char 数组时遇到问题,我应该在@987654329 中放入什么(sizeof(?)) @。见下文,因为我不知道用户输入的文件名的长度。
2)我是否使用'&'将整数值写入文件名后,例如在文件名后写入4个字节作为文件大小
这是我写的代码,
char buffer[BUFSIZ];
int numfiles=5; //say this is no of files user entered at command
open(file.....
lseek(fdout, 0, SEEK_SET); //start begging of file and move along each file some for loop
for(i=0-; ......
//for each file write filename,filesize,data....filename,filesize,data......
int bytesread=read(argv[i],buffer,sizeof(buffer));
write(outputfile, argv[i], sizeof(argv)); //write filename size of enough to store value of filename
write(outputfile, &bytesread, sizeof(bytesread));
write(outputfile, buffer, sizeof(buffer));
但是代码没有像我预期的那样工作。
有什么建议吗?
【问题讨论】:
-
如果是作业,请更新标签。
-
你为什么使用 open() 而不是 fopen() 和 write() 而不是 fwrite()?
标签: c