我想传递一个字符串到C中的函数来编辑该字符串。 我已经知道我应该传递一个指向我想改变的字符串的指针。但是,我得到奇怪的结果。这是我的代码,用参数http://www.test.test/testC改变字符串传递给函数不工作
int getAddress(char **newAddress, char *oldAddress);
int main(int argc, char *argv[]) {
//retrieving the Address Name from Input
char address[512];
memcpy(address, argv[1], strlen(argv[1])+1);
printf("%s\n", address);
getAddress((&address), argv[1]);
printf("%s\n", address);
}
int getAddress(char **newAddress, char *oldAddress){
char *checkAddress;
checkAddress = strstr (oldAddress, "http://");
*newAddress = strstr (oldAddress,"www.");
if(!(newAddress && checkAddress)){
printf("Please enter a string of the form http://www.example.example\n");
exit(0);
}
*newAddress=strtok(*newAddress, "/");
printf("%s\n", *newAddress);
return 1;
}
执行我得到的输出如下:
http://www.test.de/test
www.test.de
Jg��://www.test.de/test
这里有什么问题?
你结束你的字符串与背隙0(我在手机上打字,所以我不能写反斜杠)。 –
@ Cppplus1该字符串是从'argv [1]'中复制的,'memcpy'调用拷贝'strlen(argv [1])+ 1'字节,所以它应该以NUL结尾。 – jamesdlin
你错误地假设指针和数组是相同的东西。它们不是 - 在函数中设置'* newaddress'因此具有未定义的行为。你也不允许'strtok()'返回一个'NULL'的可能性。 – Peter