缺少声明标识符

时间:2012-09-25 16:51:27

标签: c

我之前有一个关于这个主题的问题,但我提出了这个错误,我似乎没有注意到它有什么问题。我认为它可能在于将字符串分配给字符串。

编辑:

void replace(char* string_a, char* string_b, char* string_f)
{
}

int main(int argc, char *argv[])
{
     if(argc < 4)
     { 
         printf("Not enough arguments\n");
         return 0;
     }

     replace(argv[1],argv[2],argv[3]);
}

奇怪的是,main函数必须在replace函数或编译器抱怨之后。我必须查找原因。

2 个答案:

答案 0 :(得分:3)

这不是有效的C:

 char string_a[] = argv[1];

在编译时,编译器永远无法确定存储argv[1]需要多少内存。所以这是不可能的。

但是,argv[1]是一个指针,您可以为指针指定正确类型的变量。所以你可以这样做:

const char *string_a = argv[1];

但是,argv[1]string_a现在都由完全相同的内存支持。 (这个记忆很可能是只读的。)

答案 1 :(得分:0)

做这样的事情:

int main(int argc, char *argv[]) {   
    if(argc < 4) {
        printf("Not enough arguments\n");
        return 0;
    }

    string s=argv[1];
    string s1=argv[2];
    string s2=argv[3]; 
    replace(s,s1,s2);    
} 

void replace(s,s1,s2) { 
    //statements
}