我之前有一个关于这个主题的问题,但我想到了这个错误,而且我似乎没有注意到它有什么问题。我认为这可能在于将 args 分配给字符串。
编辑:
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 函数之后,否则编译器会报错。我必须查明原因。
最佳答案
这不是有效的 C:
char string_a[] = argv[1];
在编译时,编译器永远无法计算出应该需要多少内存来存储argv[1]
。所以这是不可能的。
但是,argv[1]
是一个指针,您可以将正确类型的变量分配给指针。所以你可以这样做:
const char *string_a = argv[1];
但是,argv[1]
和 string_a
现在都由完全相同的内存块支持。 (而且这个内存很可能是只读的)。
关于c - 缺少声明标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12587552/