我之前有一个关于这个主题的问题,但我提出了这个错误,我似乎没有注意到它有什么问题。我认为它可能在于将字符串分配给字符串。
编辑:
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函数或编译器抱怨之后。我必须查找原因。
答案 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
}