我正在将GetCurrentDate()指针传递给tm结构.在该函数中,我打印未初始化的数据,然后初始化.预期成绩.
但是当我返回时,tm结构显示为未初始化.请参阅下面的控制台输 我究竟做错了什么?
未初始日期:??? ??? - 1073908332 01:9448278:-1073908376 -1217355836
初始日期:2010年5月5日星期三23:08:40
来电日期:??? ??? - 1073908332 01:9448278:-1073908376 -121735583
int main()
{
test();
}
int test()
{
struct tm* CurrentDate;
GetCurrentDate(CurrentDate);
printf("Caller date:%s\n",asctime (CurrentDate));
return 1;
}
int GetCurrentDate(struct tm* p_ReturnDate)
{
printf("uninitialized date:%s\n",asctime (p_ReturnDate));
time_t m_TimeEntity;
m_TimeEntity = time(NULL); //setting current time into a time_t struct
p_ReturnDate = localtime(&m_TimeEntity); //converting time_t to tm struct
printf("initialized date:%s\n",asctime (p_ReturnDate));
return 1;
}
Run Code Online (Sandbox Code Playgroud) 反正有没有让python列表迭代器倒退?
基本上我有这个
class IterTest(object):
def __init__(self, data):
self.data = data
self.__iter = None
def all(self):
self.__iter = iter(self.data)
for each in self.__iter:
mtd = getattr(self, type(each).__name__)
mtd(each)
def str(self, item):
print item
next = self.__iter.next()
while isinstance(next, int):
print next
next = self.__iter.next()
def int(self, item):
print "Crap i skipped C"
if __name__ == '__main__':
test = IterTest(['a', 1, 2,3,'c', 17])
test.all()
Run Code Online (Sandbox Code Playgroud)
运行此代码会产生输出:
a
1
2
3
Crap i skipped C
Run Code Online (Sandbox Code Playgroud)
我知道为什么它给了我输出,但是有一种方法我可以在str()方法中向后退一步吗?
编辑
好吧也许可以让这个更清楚.我不想做完全反向,基本上我想知道是否有一种简单的方法在python中做相当于双向迭代器?
在Linux中,当您进行阻止i/o调用(如读取或接受)时,实际发生了什么?
我的想法:进程从运行队列中取出,在某个等待队列上进入等待或阻塞状态.然后当建立tcp连接(用于接受)或硬盘驱动器准备就绪或读取文件时,会引发硬件中断,让那些进程等待唤醒并运行(在文件读取的情况下,如何linux知道要唤醒什么进程,因为可能有很多进程在等待不同的文件?).或者也许不是硬件中断,单个进程本身轮询以检查可用性.不确定,有帮助吗?
当使用JDBC并通过结果集访问基本类型时,是否有一种更优雅的方式来处理null/0而不是以下:
int myInt = rs.getInt(columnNumber)
if(rs.wasNull())?
{
// Treat as null
} else
{
// Treat as 0
}
Run Code Online (Sandbox Code Playgroud)
每当我看到这种代码时,我个人都会畏缩.我没有看到为什么没有定义ResultSet来返回盒装的整数类型(可能除了性能)或者至少提供两者.如果有人能说服我当前的API设计很棒,那么奖励积分:)
我的个人解决方案是编写一个返回Integer的包装器(我更关心客户端代码的优雅而不是性能),但我想知道我是否错过了更好的方法来执行此操作.
只是为了澄清一下,对于这段代码困扰我的不是长度,而是它在后续调用之间创建状态依赖性的事实,以及看似简单的getter实际上在同一行中有副作用的事实.
我正在使用Clojure,但我可以阅读Java,所以这不是Clojure特定的问题.这甚至似乎都不适用于Java.
我正在尝试使用isReachable实现一些'ping'功能.我正在使用的代码是这样的:
(.isReachable (java.net.InetAddress/getByName "www.microsoft.com") 5000)
Run Code Online (Sandbox Code Playgroud)
我的一位好朋友翻译成Java:
public class NetTest {
public static void main (String[] args) throws Exception{
String host = "acidrayne.net";
InetAddress a = InetAddress.getByName(host);
System.out.println(a.isReachable(10000));
}
}
Run Code Online (Sandbox Code Playgroud)
这两个都返回false.我想我一定是做错了,但谷歌的研究告诉我的不同之处.我很困惑!
这一直困扰着我 - 为什么SQL语句中的GROUP BY子句要求我包含所有非聚合列?默认情况下应该包含这些列 - 一种"GROUP BY*" - 因为我甚至无法运行查询,除非它们全部包含在内.每列必须是聚合或在"GROUP BY"中指定,但似乎任何未聚合的列都应自动分组.
也许它是ANSI-SQL标准的一部分,但即便如此,我也不明白为什么.有人可以帮我理解这个约定的必要性吗?
我有一个函数应该计算一个字母在一个句子中出现的次数,并根据它,计算它在句子中发生的概率.要做到这一点,我有一句话:
华盛顿都市区是美国受教育程度最高,最富裕的大都市区.
一组结构,包含字母,它出现的次数,以及它发生的概率,每个字母字符有一个结构,标点符号和空格有一个附加结构:
struct letters
{
char letter;
int occur;
double prob;
}box[53];
Run Code Online (Sandbox Code Playgroud)
这是函数本身:
void probability(letters box[53], int sum
{
cout<<sum<<endl<<endl;
for(int c8=0;c8<26;c8++)
{
box[c8].prob = (box[c8].occur/sum);
cout<<box[c8].letter<<endl;
cout<<box[c8].occur<<endl;
cout<<box[c8].prob<<endl<<endl;
}
}
Run Code Online (Sandbox Code Playgroud)
它正确地识别出第一行中句子中有90个字母,根据for循环第二行中的结构打印出大写字母,并打印出它出现的次数.它连续打印0表示概率.我究竟做错了什么?
我想定义一个函数复制,仅使用列表推导来复制数值列表,例如:
replicate [5,1,3,2,8,1,2]
output: [5,5,5,5,5,1,3,3,3,2,2,8,8,8,8,8,8,8,8,1,2,2]
Run Code Online (Sandbox Code Playgroud)
我知道这很容易使用内置函数的'replicate',但只允许列表理解,我该怎么办呢?
谢谢!