int enter_path(char** path) {
char* standard = "./questions.txt";
printf("\n\t%s\n\t%s",
"Please enter the file location.", "path: ");
fgets(*path, MAX_PATH_LENGTH ,stdin);
*(*path + (strlen(*path)-1) ) = '\0';
if(**path == '\n' )
*path = strdup(standard);
return 0;
}
int main(void){
char* path = malloc(MAX_PATH_LENGTH);
enter_path(&path);
some_other_function_using_the_path_string(path);
}
上面的代码工作正常,我发布这个的原因如下。
为什么我必须将指针“路径”的地址传递给函数 enter_path,以便其他一些函数可以使用/读取修改后的值。所以简而言之,为什么我在调用“enter_path”函数时必须使用&-操作数,并且不能将enter_path定义为“int enter_path(char* path);”
我知道这是引用数据类型(如 int、long 等)的普通变量,但我认为在使用指针时,更改对其他所有函数都是可见的。导致指针仍然指向内存中的同一点,只是值已更改。
难道我看到这一切都错了吗?
PS:我正在尽我所能保持我的代码符合 ansi-C 标准,这就是我使用 fgets 而不是 readline 的原因。只是说因为我已经收到了一些关于 readline 函数更容易/更安全使用的评论。
亲切的问候, JD