- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想记忆一下 C 编程。
我为自己找到的一项任务是使用指针在函数之间传递字符串变量。
所以 - 我想做的:
getcwd()
;这是我的代码:
#include <stdio.h>
#include <unistd.h>
int ch_str(char point1[]) {
printf("Point 1: %s\n", point1);
}
int getpath (char point2[]) {
printf("Path: %s\n", getcwd(point2, sizeof(point2)));
}
int main () {
char str[20] = "this is string";
char *pStr;
pStr = &str;
ch_str(pStr);
char pathname[1024];
char *pPathname;
pPathname = &pathname;
getpath(pPathname);
printf("Direct: %s\n", getcwd(pathname, sizeof(pathname)));
return 0;
}
ch_str()
在这里 - 对我来说只是“测试”,以确保我用指针做的正确(嘿嘿)。并且 - 这部分有效。
但是 getcwd()
以指针作为参数 - 只需重新调整“null”:
$ ./deploy
Point 1: this is string
Path: (null)
Direct: /home/setevoy/ci
我想 - 这是我对 C 中指针的一些(大...)误解,但是:
The
getcwd()
function copies an absolute pathname of the current working directory to the array pointed to by buf
数组 (pathname[1024]
) 通过指针 pPathname
传递,所以 - 为什么 getcwd()
不能将路径保存到 路径名[1024]
位置?我在这里看不到什么?
最佳答案
在 C 中,作为函数参数的数组是按引用传递的,而不是按值传递的。
这意味着在您的代码中,在函数 getpath
中,char point2[]
的大小是 char *
的大小,而不是参数指向的数组的大小。
由于指针的大小太小而无法包含整个路径,因此返回 NULL
。来自 getcwd
联机帮助页:
The getcwd() function copies an absolute pathname of the current working directory to the array pointed to by buf, which is of length size. If the length of the absolute pathname of the current working directory, including the terminating null byte, exceeds
size
bytes, NULL is returned, and errno is set to ERANGE; an application should check for this error, and allocate a larger buffer if necessary.
关于c - 带指针的 getcwd() 返回 "null",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37363140/
我是 Perl 语言的新手,在我使用的代码中有这一行: $BASEDIR = &getcwd(); 我想知道为什么在调用 getcwd 之前有一个 &,我找不到任何关于它的引用。有人可以帮我解决这个问
当我试图将我的iOS应用程序存档时,Ffltter一直都会出错。我用另一台电脑上传了这款应用的前一个版本。。。我尝试了Ffltter Clear,删除了podfile.lock文件,我还使用了Fflt
我正在执行 Perl 脚本以将另一个变量附加到当前工作目录的末尾,但我在使用该模块时遇到问题。 如果我从 D:\ 运行 getcwd,返回的值为 D:/ (with forward slash) 如
char cwd[256]; if (getcwd(cwd, sizeof(cwd)) == NULL) { return -1; } 首先想到的是,当 cwd 不够大时,getcwd() 可
如果是读取当前目录,函数getcwd的第二个参数应该填什么? 最佳答案 要填充的缓冲区的大小: char result[PATH_MAX]; char *r = getcwd(result, PATH
我将我的 Sinatra 应用程序上传到 Beanstalk。当我访问我的站点时,我的日志被返回 No such file or directory - getcwd 该应用程序之前运行正常。我认为这
我的许多同事在他们的 BEGIN block 中使用以下命令。 $scriptDir = dirname($0); chdir($scriptDir); $scriptDir = getcwd();
typedef struct { char Path[100]; } DirectoryInformation; void Getskelutofdirectorie(char * dir, in
我在 Debian 上使用 python3.7。我有一个网络驱动器,通常将其安装到 /media/N_drive与 dir_mode=0777和file_mode=0777 。我通常在此网络驱动器中读
我在我的 ubuntu 16.04 机器上运行一个带有 tensorflow 的 python 2.7 程序。在某些时候(发生这种情况时它会随机变化),程序崩溃是因为 os.getcwdu()失败。然
我正在运行“php:7.4-fpm”容器来为 laravel 应用程序提供服务。当我尝试通过 ssh 进入容器时,出现以下错误: shell-init: error retrieving curren
我刚刚开始在 Linux 上学习/使用 Assembly x64,并尝试调用 getcwd()与 call .尝试调用 getcwd() 后函数,我也试图输出不起作用的结果,我不明白为什么。任何指针/
我想打印出 libc::getcwd 的结果.我的问题是创建 getcwd需要 i8 ( c_char ) 缓冲区,而 String::from_utf8需要 u8缓冲。我开始于: static BU
我想从 php 中的绝对路径加载一个 javascript 文件,但我一直收到名为“无法加载本地资源”的错误。 我有一个这样的绝对路径字符串 /js/jquery.js"> 结果如下: 我该如何解决和
我正在尝试制作一个简单的程序,将您的工作目录写入一个文件,但我终究无法弄清楚我做错了什么。无论我做什么,我的缓冲区在调用 getcwd() 后都会存储空值。我怀疑这可能与权限有关,但据称,linux
刚开始学习linux和C,请不要苛求我。 我正在尝试查找当前工作目录并打开此目录中的文件以查找特定单词。如果我只找到 cwd,它会给出正确的 cwd,但是当我添加 while 循环时,cwd 为 nu
一个进程就可以完成 chdir("/to/some/where"); 当来自另一个 shell 时 mv /to/some/where /now/different/path/ 第一个过程 print
我编写了自己的 find() 函数。当我这样做时: ./myown $HOME/Documents test.txt 我得到: /Users/CJ/Documents/test/test.txt /U
我想记忆一下 C 编程。 我为自己找到的一项任务是使用指针在函数之间传递字符串变量。 所以 - 我想做的: 创建一个数组; 创建一个指向这个数组的指针; 将指针作为参数传递给另一个函数; 在第二个函数
在 Eclipse 中运行项目时,Eclipse 会在项目创建时定义的工作区中保存 .py 文件的副本。但导入到项目中的文件可以位于其他位置。 如果使用 os.getcwd() 并从命令行运行脚本,返
我是一名优秀的程序员,十分优秀!