根据我将施加的一些条件,我想添加5。这两个字符串的格式都是00:00。第一个字符串(s1)表示飞机起飞的特定时间,第二个字符串表示起飞将会有多长时间……这应该是24小时内完成的。
比方说,s1=10:45 s1=01:50
所以首先我必须将5和0相加,看看是否有进位输出,如果结果小于9,然后将4和5相加,看看结果是否小于6。如果不是,我将6减去加法,并将进位输出(1)添加到0和1,然后将1添加到0。
5+0=5
4+5=9 9-6=3进位:1
0+1+1=2
0+1=1
12:35
我想要获得的是s1=12:35
我真的不明白指针是怎么工作的。我试着去理解他们,但都是徒劳的。
你能帮帮我吗?
我有一些想法,我将在这里张贴:
#include <stdio.h>
#include <string.h>
char*add_hours(char s1[], char s2[])
int i;
for(i=4; i>3; i--){
if(s1[i]+s2[i]>9){
strcpy(s1[i], ((s1[i]+s2[i])-10);
strcpy(s1[i-1], (s1[i-1]+1));
}
...
}代码会持续一小段时间,但它会重复几次。所以我觉得我不需要把所有的东西都复制到这里。问题是,他一直告诉我这个警告:
"warning: passing argument 1 of 'strcpy' makes pointer from integer without a cast /usr/include/string.h:128: note: expected 'const char * _restrict_' but argument if of type 'int'
对于第二个参数也是一样的,对于每个strcpy都有...我理解这个错误(我认为),但我不知道如何纠正它……
发布于 2011-04-22 23:03:32
我可能错了,但我认为你不会想要这样添加的。
如果你在00:30有一个降温,在04:00到达,但夏令时发生在两者之间,会发生什么?
填充time_t表结构。将其转换为time_t。添加延迟(以秒为单位)。将其转换回time_t,并使用strftme()将其打印出来。让C库中的时间代码来处理所有这些问题。
发布于 2011-04-22 23:16:16
首先,您应该删除for循环。它只进行了2次迭代,这是令人困惑的。
然后,函数的第一行应该是
char * sum = new char[5];因为您可能想要返回一个新字符串。这也会让事情变得更清晰。
试着分解一些东西来简化你的问题。开始写:
int minutes(char * s);
int hours(char * s);分别返回以字符串表示的分钟数和小时数。
发布于 2011-04-22 23:07:17
strcpy要求字符串(字符/字符指针数组)作为其参数。您给它的是单个字符。如果您想以这种方式修改单个字符,则不需要使用strcpy。
#include <stdio.h>
#include <string.h>
char*add_hours(char s1[], char s2[])
int i;
for(i=4; i>3; i--){
if(s1[i]+s2[i]>9){
s1[i] = (s1[i]+s2[i])-10;
s1[i-1] = s1[i-1]+1;
}
...
}代码中还存在其他逻辑问题,但这应该可以帮助您入门。
https://stackoverflow.com/questions/5756665
复制相似问题