重命名函数中的变量

时间:2013-03-26 13:59:15

标签: c rename codeblocks

我使用Code :: Blocks并且我想创建一个供个人使用的程序,但我有一个问题,这是代码:

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int number;
    char name[100];
    char extension[100];
    int I;

    printf("Filename: ");
    scanf("%s", name);
    system("CLS");
    printf("File number: ");
    scanf("%d", &number);
    system("CLS");
    printf("Extension: ");
    scanf("%s", extension);
    system("CLS");
    for ((I = 1); (I = number); (I++))
    {
        rename(("&s-%d%s"), ("%s-%d.tmp1"), name, number, extension); //ERROR HERE
    }
    return 0;
}

当我编译时,我收到一个错误:

error: too many arguments to function 'rename'

感谢任何建议。

6 个答案:

答案 0 :(得分:3)

rename只需要2个参数,而你传递4个。

NAME
     rename -- change the name of a file

SYNOPSIS
     #include <stdio.h>

     int
     rename(const char *old, const char *new);

根据您的代码,您可能希望在致电sprintf()之前使用rename

此外,你可能想要一个&lt; = here来实现这个目的:

for ((I = 1); (I <= number); (I++))

答案 1 :(得分:2)

根据rename() man pagerename()函数只有2个输入参数oldpathnewpath

int rename(const char *oldpath, const char *newpath);

因此,您可以在调用代码中的rename()函数之前添加此内容

char oldpath[200], newpath[200];
sprintf(oldpath, "%s-%d%s", name, number, extension);
sprintf(newpath, "%s-%d.tmp1", name, number);

rename(oldpath, newpath);

答案 2 :(得分:2)

rename()不是variadic function,这意味着您无法根据需要传递任意数量的变量。

如果您想使用rename(2)rename(3),则只需使用2个字符串。因此,如果要使用变量名称,请将字符串组合在一起,然后将2个变量传递给函数。

答案 3 :(得分:1)

http://www.cplusplus.com/reference/cstdio/rename/

他是参考。你确实有太多的论点。它只需要两个char数组。

答案 4 :(得分:1)

我认为这里的问题不在您的代码中。你正在读哪本书?

this manualrename接受了多少个参数?那里有什么表明rename使用printf-like format strings的内容吗?否?

当你假设你可以通过反复试验学习而不阅读任何手册时,这就是问题所在。这样学习C很危险。如果您的程序最终使用未定义的行为,他们可能在您的机器上有时,并且由于神秘的原因以神秘的方式失败,无法完全在其他机器上工作等帮自己一个忙,放弃猜测;拿一本书,如果还没有,请阅读!你最终会学习编写可移植代码,而不是猜测/试错。

答案 5 :(得分:1)

尝试学习如何使用在K&amp; R .... printf函数实现中给出的省略号运算符 。