Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 计算从现在到某物到期的分钟数_C++_Codeblocks - Fatal编程技术网

C++ 计算从现在到某物到期的分钟数

C++ 计算从现在到某物到期的分钟数,c++,codeblocks,C++,Codeblocks,我有一个项目,需要我在任务到期时(我假设是在同一天)接受输入。我试图从一个类似的问题中找到一些代码,但它给了我一个错误,我认为这与时间和int值有关。这是我的密码: #include <iostream> #include <ctime> using namespace std; int main() { int hour_input,min_input; cout << "What hour is your assignment due?\n";

我有一个项目,需要我在任务到期时(我假设是在同一天)接受输入。我试图从一个类似的问题中找到一些代码,但它给了我一个错误,我认为这与时间和int值有关。这是我的密码:

#include <iostream>
#include <ctime>
using namespace std;

int main() {
 int hour_input,min_input;

 cout << "What hour is your assignment due?\n";
 cin >> hour_input;
 cout << "What minute is your assignmnet due?\n";
 cin >> min_input;

 struct tm* tm;
 time_t ts = time(NULL);
 long int delta;
 tm->tm_hour = hour_input;
 tm->tm_min = min_input;

 delta = mktime(tm) - ts;
 delta += 24*60*60;
 cout << "There are "<< delta << " minutes until your assignment is due!\n";

 return 0;
}
#包括
#包括
使用名称空间std;
int main(){
整小时输入,最小输入;
cout>hour\u输入;
cout>minu输入;
struct tm*tm;
时间=时间(空);
长三角洲;
tm->tm\u小时=小时输入;
tm->tm_min=min_输入;
delta=mktime(tm)-ts;
δ+=24*60*60;
库特
我会将每个时间结构初始化为当前日期。注意,在成员tm::tm_year中,1970由70指定


第一个错误是创建指向
struct tm
的指针,但不将其指向任何对象。您不需要指针:

struct tm tm;
/* set fields */
time_t timestamp = mktime(&tm);
第二个错误是,
mktime
要求结构中有完整的数据/时间。如果年、月和日都为零,则返回的时间将是第一年、月和日。调用实际上可能会失败,因为日期必须介于1和31之间


这意味着使用
struct tm
来处理差异并不容易。相反,使用Sam建议的
difftime

删除代码中的突出位(并且声明的顺序非常奇怪)

因此,tm是未初始化的,并且指向一个随机位置。此外,您没有正确填写结构,并且您有一个随机的(可能无效的)年、月、日和秒


mktime将尝试使此设置有效,但如果秒数足够大,则会对您的时间和分钟造成严重破坏。假设程序没有在这么长的时间内崩溃。您没有说明发生了什么错误。

添加了家庭作业标签,看起来确实如此……是的,我一直在疯狂地剪切和粘贴,我为sl的错误道歉Oppince。使用了与您发布的类似的解决方案,甚至不需要其中的delta变量,谢谢您的帮助!好的,这很有意义,似乎让我得到的部分是
difftime()
EDIT:所以我猜我将使用
localtime()的“previous”参数的当前日期
函数来实现这一点,所以现在我要弄明白了。完全弄明白了!使用
tm_hour
tm_min
struct tm
成员来获取本地时间值并进行减法,谢谢您的帮助!
struct tm tm;
/* set fields */
time_t timestamp = mktime(&tm);
 struct tm* tm;
 tm->tm_hour = hour_input;
 tm->tm_min = min_input;
 delta = mktime(tm) - ts;