gpt4 book ai didi

将 proc/uptime 转换为 DD :HH:MM:SS

转载 作者:太空宇宙 更新时间:2023-11-04 03:53:12 24 4
gpt4 key购买 nike

我已经读取了/proc/uptime 的值(这是自上次启动以来的秒数),我正在尝试将其转换为:DD:HH:MM:SS。而且我不断收到此错误:“左值需要作为赋值的左操作数:*

这是我的代码:



/**
* 方法检索自系统上次启动以来的时间 [dd:hh:mm:ss]
*/
int kerstat_get_boot_info(sys_uptime_info *s)
{
/* 将值初始化为零 */
memset(s, 0, sizeof(sys_uptime_info));

/* 打开文件并测试失败 */
FILE *fp = fopen("/proc/uptime", "r");
如果(!fp){返回-1; }

/* 嵌入变量 */
字符缓冲区[256];
size_t bytes_read;

/* 将整个文件读入缓冲区 */
bytes_read = fread(buf, 1, sizeof(buf), fp);

/* 关闭文件 */
fclose(fp);

/* 测试读取是否失败或缓冲区是否足够大 */
如果(bytes_read == 0 || bytes_read == sizeof(buf))
返回-1;

/* 空终止文本 */
buf[bytes_read] = '\0';

sscanf(buf, "%d", &s->boot_time);

&s->t_days = s->boot_time/60/60/24;
&s->t_hours = s->boot_time/60/60%24;
&s->t_minutes = s->boot_time/60%60;
&s->t_seconds = s->boot_time%60;
}

我的结构看起来像这样:



typedef 结构 {

/* 自上次启动以来的时间量 [dd:hh:mm:ss] */
/* 系统上次启动的时间 */
内部启动时间;
int_days;
int_hours;
int t_minutes;
int t_seconds;

} sys_uptime_info;

我不喜欢使用 int,因为在这种情况下它没有意义...我已经尝试过 double 和 float,但是当我这样做时,我无法从 buf 读取值到 boot_time。非常感谢您的帮助!

最佳答案

这是你的问题

&s->t_days = s->boot_time/60/60/24;
&s->t_hours = s->boot_time/60/60%24;
&s->t_minutes = s->boot_time/60%60;
&s->t_seconds = s->boot_time%60;

更改为

s->t_days = s->boot_time/60/60/24;
s->t_hours = s->boot_time/60/60%24;
s->t_minutes = s->boot_time/60%60;
s->t_seconds = s->boot_time%60;

当你看到 [error: "lvalue required as left operand of assignment] 时,你应该检查的第一件事是每个赋值的左侧。左值应该总是解析为内存地址。变量名是左值并且可以被比作对象。s->t_days 是一个左值,它可以被分配一个不同于 &s->t_days 的值。左值被称为左值,因为它们可以出现在赋值的左侧。右值是可以出现在赋值的左侧的值右侧。在这种情况下,您在赋值运算符的左侧有一个右值。

关于将 proc/uptime 转换为 DD :HH:MM:SS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19211518/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com