C重命名函数语法问题

C重命名函数语法问题,c,C,使用重命名时,使用完整目录名是否有效?我似乎无法让这个例子起作用,尽管所有迹象表明它应该起作用。有人知道为什么吗?榜样 original file location is: /home1/s/j/jb986132/402project4/402project4TEST/checkDirectory.c final destination of file is: /home1/s/j/jb986132/402project4/402project4TEST/c/checkDirectory.c

使用重命名时,使用完整目录名是否有效?我似乎无法让这个例子起作用,尽管所有迹象表明它应该起作用。有人知道为什么吗?榜样

original file location is: /home1/s/j/jb986132/402project4/402project4TEST/checkDirectory.c
final destination of file is:  /home1/s/j/jb986132/402project4/402project4TEST/c/checkDirectory.c
filename is:  checkDirectory.c
destinationName is:  /c/checkDirectory.c
active is:  /home1/s/j/jb986132/402project4/402project4TEST
我可以这样写吗

rename(original file location, final destination)

实际上,标准本身对函数的允许参数几乎没有什么可说的,它只是说明:

rename
函数可使名称为
old
所指向字符串的文件从此以
new
所指向字符串的名称命名。名为
old
的文件不再可用该名称访问。如果在调用
rename
函数之前存在由
new
指向的字符串命名的文件,则行为由实现定义

如果操作成功,
rename
函数将返回零,如果操作失败,则返回非零。在这种情况下,如果文件先前存在,则仍然可以通过其原始名称知道该文件

实现可能导致重命名功能失败的原因之一是文件已打开或需要复制其内容以实现重命名

我在最后一段中强调了这段代码,因为它意味着任何其他原因都可能导致失败,例如试图更改目录,或试图在蓝月之夜下午6点后调用它:-)

您可能认为,如果子目录位于同一物理文件系统上,那么类UNIX操作系统至少不会有问题,因为它很可能是一个简单的inode移动


然而,C标准似乎对底层文件系统没有任何预设。

实际上,标准本身对函数的允许参数几乎没有什么可说的,它只是说明:

rename
函数可使名称为
old
所指向字符串的文件从此以
new
所指向字符串的名称命名。名为
old
的文件不再可用该名称访问。如果在调用
rename
函数之前存在由
new
指向的字符串命名的文件,则行为由实现定义

如果操作成功,
rename
函数将返回零,如果操作失败,则返回非零。在这种情况下,如果文件先前存在,则仍然可以通过其原始名称知道该文件

实现可能导致重命名功能失败的原因之一是文件已打开或需要复制其内容以实现重命名

我在最后一段中强调了这段代码,因为它意味着任何其他原因都可能导致失败,例如试图更改目录,或试图在蓝月之夜下午6点后调用它:-)

您可能认为,如果子目录位于同一物理文件系统上,那么类UNIX操作系统至少不会有问题,因为它很可能是一个简单的inode移动


然而,C标准似乎对底层文件系统没有任何预设。

您尝试过吗?是的,它不起作用。我想知道是否有人知道原因,因为我提供了完整的目录名。请发布一个。你试过了吗?是的,它不起作用。我想看看是否有人知道原因,因为我提供了完整的目录名。请发布一个。