【发布时间】:2011-06-05 09:59:58
【问题描述】:
我必须编写一个简单的程序来将 16 字节的数据输出到第 0 和第 48 位的文件中,并想出了这个程序:
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
int main()
{
int f = create("test.tmp",774);
if(f>0)
{
write(f,"DEPARTMENT OF CS",16);
lseek(f,48,SEEK_SET);
write(f,"DEPARTMENT OF IS",16);
}
return 0;
}
这有什么问题?当我使用cc 7a.sh -ll 编译时它告诉我:
未定义以引用“创建”
【问题讨论】:
-
这不是 C++,你甚至不用 C++ 编译器来构建它。它是带有 POSIX 函数的直接 C。也没有理由使用
creat而不是open,而且您对f>0的测试充其量是有问题的,因为0是open可以 的有效文件描述符如果可用,则返回事实。我也看不出为什么您在这里使用 POSIX 特定的文件 I/O 而不是标准 C 库函数。 -
cc 7a.sh -ll?这是一个非常奇怪的命令,用于编译 C++ 源文件!它甚至在文件中看起来都不像 C++。 -
774 绝对是错误的。你的意思可能是 0774。