小编abe*_*eln的帖子

用scanf读取字符串

我对某些事情有点困惑.我的印象是,读取C字符串的正确方法与之scanf()相符

(不要介意可能的缓冲区溢出,这只是一个简单的例子)

char string[256];
scanf( "%s" , string );
Run Code Online (Sandbox Code Playgroud)

但是,以下似乎也有效,

scanf( "%s" , &string );
Run Code Online (Sandbox Code Playgroud)

这只是我的编译器(gcc),纯粹的运气还是别的什么?

c scanf

136
推荐指数
1
解决办法
50万
查看次数

使用Scheme进行Web抓取

是否有一个很好的库/包来使用Scheme(最好是Racket)进行网页抓取?

例如,一个等同于机械化的方案?

scheme functional-programming mechanize web-scraping racket

8
推荐指数
1
解决办法
1627
查看次数

学习回溯算法

我想学习回溯算法.有人可以教我一些吗?我尝试从一些网站学习,但它没有用.所以有人可以教我.谢谢!

java algorithm

7
推荐指数
1
解决办法
8914
查看次数

使用<iostream>打印指针

为什么

#include <iostream>
using namespace std;

int main() {
  cout << (char*)0x10 << endl; 
}
Run Code Online (Sandbox Code Playgroud)

但是,段错误

#include <iostream>
using namespace std;

int main() {
  cout << (void*)0x10 << endl; 
}
Run Code Online (Sandbox Code Playgroud)

似乎工作得很好?

c++ iostream

6
推荐指数
1
解决办法
4517
查看次数

将命令行参数传递给SML脚本

如何将命令行参数传递给SML脚本?我知道有一个CommandLine.arguments()正确的type(unit -> string list)函数,但调用解释器是这样的:

$ sml script_name.sml an_argument another_one
Run Code Online (Sandbox Code Playgroud)

不给我任何东西.指针?

sml smlnj

6
推荐指数
1
解决办法
2162
查看次数

忽略Racket中的多个返回值

在Racket中,可以通过例如从函数返回多个值

(define (foo)
  (values 1 2 3))
Run Code Online (Sandbox Code Playgroud)

然后我们可以通过做绑定它们

(define-values (one two three) (foo))
Run Code Online (Sandbox Code Playgroud)

现在one必然1,two2three3.

我有一个返回多个值的函数,但我只对它们中的一些感兴趣.有没有办法提取"有趣的"返回值,而"忽略"(即不绑定)其余的,_Haskell中的la 模式?

scheme functional-programming racket

4
推荐指数
1
解决办法
686
查看次数

高效实现"常量"设置ADT

我需要实现一个"常量"集.也就是说,只支持成员资格测试的数据结构.另外(当然),我需要一个工厂例程,给定一个元素列表,构造一个常量集.

请注意,不仅在常量集上不允许变异,而且我不需要返回新常量集的"add"操作(也就是说,一旦初始化发生,我只对测试元素是否感兴趣是否在集合中).

Goold旧哈希表在这里是一个明显的选择,但我想知道,我们能否以某种方式利用我们只需要支持单个操作的事实(并且,在构造集合时,我们知道它的所有元素将是什么)?是否有一个数据结构(可能是一种特殊类型的哈希表)在这里表现得特别好?

language-agnostic algorithm set data-structures

4
推荐指数
1
解决办法
139
查看次数

Scheme/Racket相当于ualarm

是否有一个与ualarm等效的球拍/方案?

即如何在Racket中设置系统计时器?

scheme posix timer racket

3
推荐指数
1
解决办法
513
查看次数

在pthreads中指定线程堆栈大小

我想增加通过pthread_create()创建的线程的堆栈大小.走的路似乎是

int pthread_attr_setstack( pthread_attr_t *attr,
                           void *stackaddr,
                           size_t stacksize ); 
Run Code Online (Sandbox Code Playgroud)

来自pthread.h.

但是,根据多个在线参考,

stackaddr应适当对齐以用作堆栈; 例如,如果(stackaddr&0x7)不为0,则pthread_attr_setstack()可能会因[EINVAL]而失败.

我的问题:有人可以举例说明如何进行对齐吗?是(对齐)平台还是依赖于实现?

提前致谢

c c++ multithreading pthreads

1
推荐指数
1
解决办法
2663
查看次数

对象组合与提供显式包装器

我有一个A看起来像这样的课程:

class A {
// A's internal state
public:
  void someMethod();
  void anotherMethod();
};
Run Code Online (Sandbox Code Playgroud)

我想A在另一个班级里面使用B.我不想B成为一个子类型A,但我想要A以某种形式访问B用户的公共方法.

实现此目的的一种方法是简单地包含A以下公共成员的实例B:

class B {
public:
  A a;
  // other members
};
Run Code Online (Sandbox Code Playgroud)

另一个是A成为私人成员B,并提供围绕A公共方法的包装:

class B {
  A a;
public:
  void someMethod(){ a.someMethod(); }
  void anotherMethod(){ a.anotherMethod(); }
}
Run Code Online (Sandbox Code Playgroud)

我想知道是否有一种"首选"方式(或者甚至可能不涉及上述两种替代方案),或者只是一个偏好问题.谢谢.

c++ oop

1
推荐指数
1
解决办法
157
查看次数