c - 找不到“格式参数过多”的问题
问题描述
我的 sprintf 语句有问题。我看到 6 个参数格式和 6 个提供的参数,但我收到以下错误:
jsonServer.c:450:4: 错误:未知转换类型字符 '}' 格式 [-Werror=format=]
sprintf(message, "{\"num_clients\": %d,\"num_requests\": %d, \"errors\": %d,\"uptime\": %u,\"cpu_time\": %lu,\"memory_used\": %l}", (numConnections+1), numRequests, numErrors, uptime, cpuTime, memUsed);
jsonServer.c:450:4:错误:格式参数过多 [-Werror=format-extra-args]
char *buildStatus()
{
struct rusage *usage = malloc(sizeof(struct rusage));
int usageRet = getrusage(RUSAGE_SELF, usage);
if (usageRet == -1)
{
perror("RUSAGE fail");
exit(EXIT_FAILURE);
}
long unsigned cpuTime = (usage->ru_utime).tv_sec + (usage->ru_stime).tv_sec;
long memUsed = get_memory_usage_linux();
unsigned int uptime = 0;
char *message = malloc(1000);
sprintf(message, "{\"num_clients\": %d,\"num_requests\": %d,\"errors\": %d,\"uptime\": %u,\"cpu_time\": %lu,\"memory_used\": %l}", (numConnections+1), numRequests, numErrors, uptime, cpuTime, memUsed);
free(usage);
return message;
}
我认为存在一些偷偷摸摸的转义字符问题,但是在到处都粘贴反斜杠之后,我似乎无法修复它。
解决方案
您所要做的就是纠正%l
(没有这样的说明符),您可能应该使用%ld
.
char *buildStatus()
{
struct rusage *usage = malloc(sizeof(struct rusage));
int usageRet = getrusage(RUSAGE_SELF, usage);
if (usageRet == -1)
{
perror("RUSAGE fail");
exit(EXIT_FAILURE);
}
long unsigned cpuTime = (usage->ru_utime).tv_sec + (usage->ru_stime).tv_sec;
long memUsed = get_memory_usage_linux();
unsigned int uptime = 0;
char *message = malloc(1000);
sprintf(message, "{\"num_clients\": %d,\"num_requests\": %d,\"errors\": %d,\"uptime\": %u,\"cpu_time\": %lu,\"memory_used\": %ld}", (numConnections+1), numRequests, numErrors, uptime, cpuTime, memUsed);
free(usage);
return message;
}
希望有帮助。
推荐阅读
- android - 使用 PlayServices Api 和 LocationManager 有什么区别?还有其他方法可以获取android设备的位置吗?
- android-camera2 - 在 Camera2 API 中设置专有 CaptureRequest 键的值
- webpack - Storybook 不会从节点模块加载 CSS
- postgresql - PostgreSQL:在where子句中使用函数参数
- sql - 按活动数据中的代理名称分组
- python-3.x - 如何将 Python 3.4.0 更新到 3.4.10?
- python - 如何使该机器人可以在任务管理器中工作?
- wpf - 自定义绘制复选框时,如何将椭圆形的填充颜色绑定到复选框的前景?
- android - 配置项目 ':app' 时出现问题。在 react-native 中并给出一些字节码作为错误
- php - LARAVEL - 我想从包含主类别 ID 的上部 _id 列的类别对象访问主类别