我正在尝试从命令行以纪元格式输入时间,并且我想将其存储在 struct timespec 变量中。
我能够存储它并以某种方式打印它但是当我向 timespec 变量添加一些东西时它会给出奇怪的东西
这是代码
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char *argv[]){
struct timespec InputTime;
InputTime.tv_sec = (time_t)argv[1]; //(__time_t)
InputTime.tv_nsec = (long)argv[2]; //(__syscall_slong_t)
printf("The time before %s,%s\n",
InputTime.tv_sec,
InputTime.tv_nsec);
InputTime.tv_sec += 3;
InputTime.tv_nsec += 3;
printf("The time after %s,%s\n",
InputTime.tv_sec,
InputTime.tv_nsec);
return 0;
}
这是输入和输出
INPUT
./InputTime 1615578864 438734073
OUTPUT
The time before 140733952311809,140733952311820
The time after 140733952311812,140733952311823
我尝试对 *argv[] 使用其他变量类型,并尝试使用 %s 作为 print 的输出,但是之前的时间给了我正确的输入,但之后的时间给了我一些奇怪的东西,这里是我输出时的示例将 %ld 更改为 %s。此外,当我这样做时,编译器会发出一些警告,因为我没有使用正确的格式
./InputTime 1615578864 438734073
The time before 1615578864,438734073
The time after 5578864,734073
我正在使用这个 gcc 版本
gcc --version
gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.