改下面的c语言程序!急!急!急!

#include<time.h>
#include<stdio.h>
#include<string.h>
#include<Windows.h>
#include<stdlib.h>
#define N 20
#define M 100
struct student
{
char id[N];
char theclass[N];
char name[N];
char ontime[N];
char outtime[N];
}student[M];
int n;
void input()
{
int i;
printf("\n请输入录入学生信息的总数:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
printf("\n\t请输入第%d个学生学号(20s):",i);
scanf("%s",student[i-1].id);
printf("\n\t请输入第%d个学生班级(20s):",i);
scanf("%s",student[i-1].theclass);
printf("\n\t请输入第%d个学生姓名(20s):",i);
scanf("%s",student[i-1].name);
printf("\n\t请输入第%d个学生上机时间(20s)(例2011年7月8日9点26分表示为:1107080926):\n ",i);
scanf("%s",student[i-1].ontime);
printf("\n\t请输入第%d个学生下机时间(20s)(例2011年7月8日9点26分表示为:1107080926):\n ",i);
scanf("%s",student[i-1].outtime);
printf("\n\t提示:您已成功录入第%d条信息\n",i);
}
}

void main1()
{
char ontime[N];
char outtime[N];
unsigned char time1[] = ontime;
unsigned char time2[] = outtime;

struct tm t1 = {0};
struct tm t2 = {0};

time_t _t1;
time_t _t2;

double diff;

t1.tm_year = time1[0] + 100;
t1.tm_mon = time1[1];
t1.tm_mday = time1[2];
t1.tm_hour = time1[3];
t1.tm_min = time1[4];

t2.tm_year = time2[0] + 100;
t2.tm_mon = time2[1];
t2.tm_mday = time2[2];
t2.tm_hour = time2[3];
t2.tm_min = time2[4];

_t1 = _mkgmtime( &t1 );
_t2 = _mkgmtime( &t2 );

diff = difftime(_t2, _t1 );

printf( "相差 %.0f 分钟\n", diff / 60 );

}

把 void main1()改成 int main(void)
然后,把 return 0; 添加到 printf( "相差 %.0f 分钟\n", diff / 60 ); 后面。

对于这两条
unsigned char time1[] = ontime;
unsigned char time2[] = outtime;
我是这样改的:
unsigned char* time1 = ontime;
unsigned char* time2 = outtime;

自己编译一下看看,我用MinGW,没有VC。

————————————————————————
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-07-08

unsigned char time1[] =  ontime;

 unsigned char time2[] =  outtime;

我的这两句有错误  

_t1 = _mkgmtime( &t1 );

 _t2 = _mkgmtime( &t2 );

还有这个 不知道是不是我的编译器问题 显示这个函数未声明  貌似我只找到了 mktime这个函数  可能缺少这个函数  所以我把函数改成了 mktime  为了通过编译嘛。。

然后 前两句 我改成了  

char *time1 =  ontime;

 char *time2 =  outtime;

然后编译成功了。。。。不过 运行结果是 看图。。

第2个回答  2011-07-08
你好:
1、错误1:程序入口为main函数,而main函数没调用到您所写的input函数;
2、错误2:unsigned char time1[] = ontime;
char ontime[N];
char outtime[N];
未进行初始化(例如:memset(&ontime, 0, sizeof(ontime)) ; ),就当作值赋值于time1
3、字符串赋值操作:
不可直接使用等号(未重载=操作符):unsigned char time1[] = ontime;
可使用如下操作:
unsigned char time1[N];
memcpy(&time1, &ontime, sizeof(ontime));
或者
strcpy(time1, ontime);
第3个回答  2011-07-08
这个“main1()”是你打错了,还是你在程序中就是这么写的?追问

就是那么写的 还有别的错误

相似回答