小编Kon*_*lph的帖子

使用自定义入口点运行程序时(使用gcc 7.4.0),scanf会产生segfault

考虑以下代码:

#include <stdio.h>
#include <stdlib.h>

int main() {
    printf("main\n");
    int a;
    scanf("%d", &a);
    printf("a = %d\n", a);
    return 0;
}

int main1() {
    printf("main1\n");
    int a;
    scanf("%d", &a);
    printf("a = %d\n", a);
    exit(0);
    return 0;
}

int main2() {
    printf("main2\n");
    int a = getchar() - '0';
    int b = getchar() - '0';
    int c = getchar() - '0';
    printf("a = %d\n", 100 * a + 10 * b + c);
    exit(0);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

假设代码位于一个名为test.c的文件中,则以下代码可以正常工作(它显示“ a = 123”):

gcc -o …
Run Code Online (Sandbox Code Playgroud)

c gcc

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

在PHP中合并正则表达式

假设我有以下两个包含正则表达式的字符串.我如何合并它们?更具体地说,我希望将这两个表达式作为替代.

$a = '# /[a-z] #i';
$b = '/ Moo /x';
$c = preg_magic_coalesce('|', $a, $b);
// Desired result should be equivalent to:
// '/ \/[a-zA-Z] |Moo/'
Run Code Online (Sandbox Code Playgroud)

当然,这样做作为字符串操作是不实际的,因为它涉及解析表达式,构造语法树,合并树然后输出相当于树的另一个正则表达式.没有这最后一步,我真的很开心.不幸的是,PHP没有RegExp类(或者是吗?).

没有办法实现这个目标?顺便说一句,是否有其他语言提供方式?这不是一个很正常的场景吗?可能不会.:-(

或者,是否有一种方法可以有效地检查两个表达式中的任何一个是否匹配,哪一个匹配更早(如果它们在同一位置匹配,哪个匹配更长)?这就是我现在正在做的事情.不幸的是,我经常在长字符串上执行此操作,对于两种以上的模式.结果很(是的,这肯定是瓶颈).

编辑:

我应该更具体 - 抱歉.$a并且$b变量,它们的内容超出了我的控制范围!否则,我会手动合并它们.因此,我不能对使用的分隔符或正则表达式修饰符做任何假设.请注意,例如,我的第一个表达式使用i修饰符(忽略大小写),而第二个表达式使用x(扩展语法).因此,我不能只将两者连接起来,因为第二表达并不能忽视壳体和第一不使用扩展语法(和任何空白在其中是显著!

php regex abstract-syntax-tree

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

OS X上没有Xcode的GCC

我刚刚打开我的新款MacBook Pro(!),现在正在为开发进行正确的设置.由于我想避免混乱,我想知道我是否真的需要安装Xcode工具(我从不使用IDE或Mac专用工具),因为我将使用MacPorts安装更新版本的GCC .

那么,安装Xcode有什么好处吗?有必要吗?它在幕后做了什么样的设置?基本上:我可以跳过这个或者它会回来困扰我,因为一些Unix开发工具只是假设OS X总是以这种方式设置?

macos xcode gcc

10
推荐指数
3
解决办法
2万
查看次数

在同一个线程内锁定字典

我有一个函数,它根据Key(名称)返回字典上的条目,如果它不存在,则返回一个新创建的条目.

我的问题是"双锁":SomeFunction锁定_dictionary,检查键的存在,然后调用一个也锁定相同字典的函数,它似乎工作但我不确定是否有一个这种方法的潜在问题.

public Machine SomeFunction(string name) 
{
    lock (_dictionary)
    {
        if (!_dictionary.ContainsKey(name))
                    return CreateMachine(name);
        return _dictionary[name];
    }
}


private Machine CreateMachine(string name)
{
    MachineSetup ms = new Machine(name);
    lock(_dictionary)
    {
        _ictionary.Add(name, ms);
    }
    return vm;
}
Run Code Online (Sandbox Code Playgroud)

c# multithreading

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

使用Timers会对应用程序产生负面影响吗?

我想知道该Timer组件以及由于其使用或其使用的多个实例而产生的负面影响(如果有的话).在实践中,是否应该限制一个项目一次应该使用多少计时器?

vb.net

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

如何将两列因子组合成一列而不将因子级别更改为数字

我试图找到一种方法将两列因子组合成一列而不将因子水平改为数字.例如,考虑以下两个data.frame数据集

  dataset 1                       dataset 2
  Number  Student                 Number Student
       1    Chris                      1    Matt
       2    Sarah                      2   Keith
Run Code Online (Sandbox Code Playgroud)

我正在尝试从数据集1中取出"学生"列,从数据集2中取出"学生"列,然后创建一个包含名称"Chris","Sarah","Matt"和"Keith"的大学生列.

我试过了:

  student.list<-c(dataset1[,2],dataset2[,2])
  student.list
Run Code Online (Sandbox Code Playgroud)

但是,这不起作用,因为名称变成带有c()函数的数字.我希望我的列表保留学生的姓名(即不将其转换为数字).我也试过cbind(),但是给出了与c()相同的问题......

谢谢

r

10
推荐指数
2
解决办法
4万
查看次数

来自右值的非const类型引用

请考虑以下代码:

class Widget{};

template<typename T>
T &&foo2(T &&t){
    return std::forward<T>( t );
}

/// Return 1st element
template<typename T>
typename std::tuple_element<0, typename std::decay<T>::type >::type  &&foo(T &&t){
    return std::forward< typename std::tuple_element<0, typename std::decay<T>::type >::type >
            ( std::get<0>(t) );
}

Widget w;
auto list = std::make_tuple(
    w,
    Widget()
);


int main()
{
  auto &l  = foo(list );                      // This is NOT work
  //auto &l2 = foo2( std::get<0>(list) );     // This one works.
}
Run Code Online (Sandbox Code Playgroud)

http://coliru.stacked-crooked.com/a/4d3b74ca6f043e45

当我尝试编译时,我收到以下错误:

error: invalid initialization of non-const reference of …
Run Code Online (Sandbox Code Playgroud)

c++ templates rvalue-reference c++11

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

汇总所有列

我有以下格式的数据:

gen = function () sample.int(10, replace = TRUE)
x = data.frame(A = gen(), C = gen(), G = gen(), T = gen())
Run Code Online (Sandbox Code Playgroud)

我现在想要在每行中附加行中所有元素的总和(我的实际函数更复杂,但sum说明了问题).

没有dplyr,我会写

cbind(x, Sum = apply(x, 1, sum))
Run Code Online (Sandbox Code Playgroud)

导致:

   A C  G T Sum
1  3 1  6 9  19
2  3 4  3 3  13
3  3 1 10 5  19
4  7 2  1 6  16
…
Run Code Online (Sandbox Code Playgroud)

但用dplyr做这件事似乎很难.

我试过了

x %>% rowwise() %>% mutate(Sum = sum(A : T))
Run Code Online (Sandbox Code Playgroud)

但结果不是每一行的总和,这是意想不到的东西,(对我来说)莫名其妙.

我也试过了

x %>% rowwise() …
Run Code Online (Sandbox Code Playgroud)

r summarization dplyr

10
推荐指数
2
解决办法
1830
查看次数

编码特殊字符以传递到URL

我正在尝试学习Python,所以我想首先尝试查询IMDB以对照IMDB检查我的电影收藏;一切顺利

我所坚持的是如何处理名称中的特殊字符,以及如何将名称编码为URL会尊重的名称。

例如我有电影 Bru?no

如果使用urllib.parse.quoteget 对字符串进行编码 - Bru%CC%88no 这意味着当我使用OMDBAPI查询IMDB时,找不到电影。如果我通过OMDBAPI网站进行搜索,则它们会将名称编码为,Br%C3%BCno并且此搜索有效。

我假设编码使用的是其他标准,但是我无法解决需要做的事情

python urlencode python-3.x omdbapi

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

什么是“托尼表”?

下面这句话摘自GitHub页面

前/后表(“托尼表”)中描述的 C++20 功能

  1. C++ 文化中的Tony 表是什么?

  2. 为什么它们被用来表示前/后表

c++

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