arrays - 二进制+的C无效操作数(有'char *'和'char *')?
问题描述
在 CI 中有:
filedata->string_table + (X)->sh_name
现在我想在它旁边添加以下字符串:“new”
我试过了:
filedata->string_table + (X)->sh_name + "new"
但这不会编译,我得到:
readelf.c:6807:83: error: invalid operands to binary + (have ‘char *’ and ‘char *’)
filedata->string_table + (X)->sh_name : filedata->string_table + (X)->sh_name+"new")
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^
如何解决这个问题?
解决方案
使用正确的方式连接字符串。
如果要将结果添加到现有缓冲区,请使用strcat()
连接字符串。
char buffer[1024000]; /* enough size */
strcpy(buffer, filedata->string_table + (X)->sh_name);
strcat(buffer, "new");
您还可以使用snprintf()
将连接的结果放在缓冲区中。
char buffer[1024000]; /* enough size */
snprintf(buffer, sizeof(buffer), "%s%s",
filedata->string_table + (X)->sh_name, "new");
要将结果打印到标准输出,请使用两个%s
格式说明符连续打印两个字符串。
printf("%s%s",
filedata->string_table + (X)->sh_name, "new");
如果字符串"new"
是固定的,你也可以这样做:
printf("%snew",
filedata->string_table + (X)->sh_name);
推荐阅读
- javascript - 我需要帮助以使此导航栏在响应式折叠时全屏显示
- asp.net-core - 无法从 Blazor 调用 Javascript。在“窗口”中找不到“startDataTable”
- python - 未找到 csv 文件 Juypterlab python3
- swift - MTLSharedEventListener 块在命令缓冲区调度之前调用而不是在运行中
- excel - VBA Excel - 使用验证格式化年份范围
- webpack - 导入“事件”时,带有 Webpack 的 Electron Forge 得到“未定义要求”
- python - 当我尝试放置纹理时,它给了我这个错误: IndentationError: unindent does not match any external indentation level(python)
- json - Flutter 如何通过 InstagramBasicDisplay 从带有短代码的复制/共享链接中获取 Instagram 发布的视频/图像 URL
- c++ - 在 Visual Studio 中,c++ 项目主管之外的第 3 方文件(如glad.h 和 glfw3.lib)的常见结构是什么?
- javascript - 在完成代码执行之前快速请求返回