c - 直接将main的参数传递给编写函数
问题描述
我有一个已经接受参数的 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, 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));
推荐阅读
- break - 如何在 InDesign 脚本中打断一行文本?
- pandas - 如何将 GROUPBY 的结果与 pandas 中的原始数据框连接起来?
- python - 在管理面板和站点(Django)中同时授权管理员
- filter - SPARQL - 过滤评论。标签和摘要到英文并保留整数和 uri 值
- excel - VBA搜索边界单元格并提取
- javascript - 将更新的元素从 JS 线程传递到 Shadow Thread
- c++ - 结构**我错过了什么?
- flask - Flask 在主模块外设置 @app 装饰器
- jena - tdb2.tdbcompact 命令行工具返回 Failed to get a lock: file
- javascript - 尝试使用 selenium 进行抓取时,我得到了“陈旧的元素引用”,我在需要时使用了“await”语句,但仍然出现错误