我有以下代码:
#include <stdio.h>
#include <stdlib.h>
char values[] = {"abcde"};
int main(int argc, char *argv[])
{
printf("%d\n", strcmp(&values[0], argv[1]));
return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)
我以这种方式编译和启动:
$ gcc main.c -o main
$ ./main a
98
Run Code Online (Sandbox Code Playgroud)
的结果strcmp
是 98,所以值不一样。当我替换&values[0]
通过"a"
在代码中,我看到,他们是相同的(strcmp
输出等于0)。
那么有没有办法values[0]
作为字符串访问?我想我需要\0
在最后以某种方式指定,以便将字符用作字符串,但我找不到方法。
我正在寻找一种从 golang 程序在终端中启动 ssh 的方法。
func main() {
cmd := exec.Command("ssh", "user@192.168.0.17", "-p", "2222")
err := cmd.Run()
if err != nil {
panic(err)
}
}
Run Code Online (Sandbox Code Playgroud)
这非常有效,直到我输入正确的密码,然后程序退出。我想当经过身份验证时,会启动另一个 ssh 脚本,但我不知道如何解决这个问题。我搜索了一些有关它的信息,但我发现的只是如何在 go 中创建 ssh 会话,如果可能的话,我想避免这种情况。
我有以下一段C代码:
#include <stdio.h>
int main()
{
int i;
for(i=0; i<10; i++)
puts("hello, friend");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我这样编译的:gcc firstprog.c -o firstprog
然后,当使用gdb
拆卸它时,我看到:
(gdb) disassemble
Dump of assembler code for function main:
=> 0x0000555555555149 <+0>: endbr64
0x000055555555514d <+4>: push rbp
0x000055555555514e <+5>: mov rbp,rsp
0x0000555555555151 <+8>: sub rsp,0x10
0x0000555555555155 <+12>: mov DWORD PTR [rbp-0x4],0x0
0x000055555555515c <+19>: jmp 0x55555555516e <main+37>
0x000055555555515e <+21>: lea rdi,[rip+0xe9f] # 0x555555556004
0x0000555555555165 <+28>: call 0x555555555050 <puts@plt>
0x000055555555516a <+33>: add DWORD PTR [rbp-0x4],0x1
0x000055555555516e <+37>: cmp …
Run Code Online (Sandbox Code Playgroud) 想象一下下面的一段代码:
if someBool && funcReturningABool() {
// code here...
}
Run Code Online (Sandbox Code Playgroud)
wheresomeBool
是一个布尔值并funcReturningABool
返回真或假。
如果someBool
等于false,funcReturningABool
仍然会被执行吗?