本人编写的源代码:
#include
#include
int main(void)
{
struct time {
int h;
int m;
int s;
} gap;
int gapsec;
int get_sec(void);
gapsec = get_sec();
gapsec -= get_sec();
gapsec = (gapsec >= 0) ? gapsec : -gapsec;
gap.h = gapsec / 3600, gapsec %= 3600;
gap.m = gapsec / 60, gapsec %= 60;
gap.s = gapsec;
printf("%d:%d:%d\n", gap.h, gap.m, gap.s);
return 0;
}
int get_sec(void)
{
int i, j, totalsec = 0;
char a[20], h[5], m[5], s[5], c;
for (i = 0; (c = getchar()) != '\n'; i++)
a[i] = c;
a[i] = '\0';
for (i = 0, j = 0; a[i] != ':'; i++, j++)
h[j] = a[i];
h[j] = '\0';
totalsec = atoi(h) * 3600;
for (i++, j = 0; a[i] != ':'; i++, j++);
m[j] = a[i];
m[j] = '\0';
totalsec += atoi(m) * 60;
for (i++, j = 0; a[i] != '\0'; i++, j++);
s[j] = a[i];
s[j] = '\0';
totalsec += atoi(s);
return totalsec;
}
问题:此代码在64位ubuntu(12.04)上能编译通过,但当通过gdb调试时,get_sec函数中的数组m和s却无法写入相应的数据,结果很诡异,希望哪位大哥能帮忙解释下,小弟在此拜过!


angellove24h 于 2013-02-19 20:33:22发表:
学习了
tensen1533 于 2013-02-19 17:21:14发表:
看不懂韩国
劲舞青春 于 2013-02-19 17:11:49发表:
这个我喜欢
于 2013-01-21 14:50:41发表:
首先 我不知道是显示问题还是怎么回事,你以下代码就有问题
char a[20], h[5], m[5], s[5], c;
for (i = 0; (c = getchar()) != '\n'; i++)
a = c;
a = '\0';
a是一个地址哦,估计应该写成a[i] = c;还有就是如果写成这样的话,最好这个写成这样 for (i = 0; (c = getchar()) != '\n',i
759040024 于 2013-01-05 16:56:52发表:
受教了 新手