- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我通过使用声明一个字符串数组:
char *commands[100];
然后我继续进入一个 while 循环来读取用户输入的命令:
while(getcmd(buf, sizeof(buf), cmd_count) >= 0){
printf(2, "cmd_count: %d\n", cmd_count);
buf[strlen(buf)-1] = 0;
printf(2, "string buf: -%s-\n", buf);
commands[cmd_count] = buf;
printf(2, "commands: %s\n", commands[0]);
printf(2, "commands: %s\n", commands[1]);
printf(2, "commands: %s\n", commands[2]);
printf(2, "commands: %s\n", commands[3]);
cmd_count++;
}
这是两次迭代的输出:
0 EZ$ ls
cmd_count: 0
string buf: -ls-
commands: ls
commands: (null)
commands: (null)
commands: (null)
EZ$ echo hello
cmd_count: 1
string buf: -echo hello-
commands: echo hello
commands: echo hello
commands: (null)
commands: (null)
尽管 cmd_count
在第二次迭代中显然为 1,但它重写了第 0 位和第 1 位。给了什么?
最佳答案
不知道你的整个算法,一个简单的方法可能是:
目前,您已分配变量 command 以容纳 100 个字符指针,这样您就有空间处理 cmd_count 0 - 99。
但是您只有一个缓冲区来存储每个命令
如果您确实需要将每个命令存储在读取它们的 while 循环之后,那么以下方法如何:
为命令中的每个指针分配一个足以容纳命令的缓冲区
for (int i = 0; i < 100; i++) {
commands[i] = malloc(MAXSTRINGSIZE + 1);
}
(您可以通过分配 ((MAXSTRINGSIZE + 1) * 100) 然后将命令中的每个指针设置为正确的偏移量来优化它,但是如果您只是学习指针,上述方法可能更容易理解)
关于c - 当我尝试追加时,字符串数组被完全重写 - C (xv6),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48493580/
我已经在我的目标板上安装了 gstreamer-1.0。当我运行以下命令时: gst-launch-1.0 filesrc location="/home/test.mp4" ! decodebin
我的java项目中的资源文件夹下有资源。当我使用以下方法 [2] 加载资源时,它正在工作。但是当我在 Wildfly 9.x 中部署 war 时,它说找不到 file.avsc 文件。它给出的类路径为
我正在使用 PIL,但 im.show() 不工作。我想是因为我没有安装 xv 实用程序。所以我尝试安装它,我在谷歌上搜索我有很多解决方案,但它们似乎对我不起作用。我正在粘贴其中一个。 sudo ba
我是一名优秀的程序员,十分优秀!