将 main 的参数直接传递给编写函数

Pass argument of main directly to write function

我有一个 C 程序,它已经接受了一个参数,将它存储到一个缓冲区中,然后将它传递给一个写函数:

main(int argc, char** argv) {

    ...

    char buff[1000];
    strcpy(buff, argv[1]);

    write(server_socket, buff, sizeof(buff));     

    ...

    return 0;
}

如果我执行我的代码:./testCode "equinox",equinox 将存储在缓冲区中,然后缓冲区将传递给 write() 函数。一切都会按预期工作案例。

有没有办法跳过我将参数存储在缓冲区中然后将其传递给 write() 的部分?

如果我这样做是否正确:

write(server_socket, argv[1], sizeof(argv[1])); 

我什至不确定这是否会按预期工作。

是的,它可以工作,但稍作修改:

write(server_socket, argv[1], strlen(argv[1]));

由于 argv[1] 是指向 char 数组的指针,因此 sizeof 运算符将 return 您机器中指针的大小(即 8,如果您使用的是 64 位计算机)。相反,您应该使用 strlen 来获取要写入的字节数。

此声明

write(server_socket, buff, sizeof(buff));

和这个声明

write(server_socket, argv[1], sizeof(argv[1]));

两者都不正确,因为它们没有正确指定写入的字节数。

在第一种情况下,字符串的大小可以小于buff 的大小。在第二种情况下,使用的指针大小等于 4 或 8 个字节。

你需要的是

write(server_socket, argv[1], strlen( argv[1] ) );

write(server_socket, buff, strlen(buff));