小编Sou*_*osh的帖子

realloc和memcpy如何工作?

我有两个问题.

  1. 不要realloc()memcpy()阵列中的复制项目到另一个的方式更快的不仅仅是遍历每个元素O(N)?如果答案是肯定的,那么您认为它的复杂性是什么?

  2. 如果分配的大小小于原始大小,是否realloc()将条目复制到其他位置,或者只是将它们保留,因为它们会减小数组的大小?

c memory-management realloc

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

如何在linux中创建虚拟以太网设备?

我正在测试一个协议的实现,该协议使用以太网(而不是IP)在两台计算机之间进行通信.为了实际上不必拥有两台物理计算机,我想创建两个虚拟以太网接口.这些只能相互通信,因此一个端点程序将绑定到一个接口,另一个端点将绑定到另一个端点.

这可能吗,我该怎么办?

linux virtualization networking ethernet

24
推荐指数
2
解决办法
5万
查看次数

在Sql Server中相当于MySQL ON DUPLICATE KEY UPDATE

我试图在Sql Server(2012)中找到等效的以下MySql查询?

INSERT INTO mytable (COL_A, COL_B, COL_C, COL_D)
VALUES ( 'VAL_A','VAL_B', 'VAL_C', 'VAL_D')
ON DUPLICATE KEY UPDATE COL_D= VALUES(COL_D);
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

PS.我已经读过MERGE查询具有类似的功能,但我发现它的语法非常不同.

mysql sql sql-server

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

学习Ruby on Rails对Grails有什么好处?

我的公司正在开始Grails路径.原因是当前开发人员对Java非常重视,但感觉需要一种MVC风格的语言用于未来的Web开发项目.就个人而言,我来自设计/可用性世界,但随着我承担更多"前端"职责,我开始觉得需要更加集中地学习语言,所以我可以编写一些逻辑但特别是前端我的UI和东西的代码.

我一直试图亲自进入Python/Django,但从来没有投入太多时间.现在我的公司正在"跳入"Grails,我买了" 使用Rails的敏捷Web开发(第3版 - Beta) ",我开始进入RoR.我仍然希望将来或侧面学习Python,但我最大的问题是:

  • 我应该学习RoR,并且在我的"作品集"中使用更通用的语言,知道我的RoR知识对我的Grails需求也有用吗?

-要么-

  • 我应该跳过RoR并专注于学习我即将需要工作的Grails,并在以后学习RoR/Django(Ruby/Python)吗?

基本上,问题围绕着Grails在非公司环境中的有用性以及Rails和Grails之间的相似之处.(而且,这一点,同时试图避免Python与Ruby(在Rails上)的百年讨论:))

ruby grails groovy ruby-on-rails

21
推荐指数
2
解决办法
8646
查看次数

如何在VS2008中启用行号?

我似乎无法找到那个选项.

当然它在那里?

visual-studio-2008

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

数组类型char []不可分配

那么这是我的第一篇文章.我一直在尝试做这个选择选择的东西,我希望用户只选择数字而不是键入它们(更容易)但是当我希望数字等于一个字符串时,它说"数组类型char[30]不可分配".即使在后面我也放了分号.

#include <stdio.h>

int main() {
  int choice1;
  char word[30];

  printf("You have three choice.\n");
  printf("[1] Jump [2] Run [3] Dance\n");
  scanf("%d",&choice1);
  if (choice1 == 1)
  {
    word = "Jump" //Error #1
  }
  else if (choice1 == 2)
  {
    word = "Eat" //Error #2
  }
  else if (choice1 == 3)
  {
    word = "Sleep"; //Error #3
  }

  printf("You will now be %sing",word);

}
Run Code Online (Sandbox Code Playgroud)

c arrays string assignment-operator

21
推荐指数
4
解决办法
5万
查看次数

如何让gcc警告undefined结构?

我有一个在.h中定义的结构

struct buf_stats {
   // ***
};
Run Code Online (Sandbox Code Playgroud)

然后在.c文件中

struct buf_stats *bs = malloc(sizeof(struct buf_states*)) ;
Run Code Online (Sandbox Code Playgroud)

哪里buf_states是拼写错误.

但gcc并没有警告我,虽然我用过 -Wall

这个错误/错字花了我3个小时才发现.

如何让gcc像这样警告未定义的结构?

c gcc pointers sizeof gcc-warning

20
推荐指数
2
解决办法
1413
查看次数

strncmp(NULL,"foo",0)是否定义良好?

strncmp如果第三个参数为零,将NULL指针作为参数放入是否安全?即调用如:

strncmp(NULL, "foo", 0);
Run Code Online (Sandbox Code Playgroud)

c language-lawyer strncmp

19
推荐指数
2
解决办法
2227
查看次数

为什么C编译器不警告文字字符串不兼容的类型?

以下程序由于未定义的行为(尝试修改字符串文字)而引发系统分段错误:

int main() {
  char *s = "immutable";
  s[0] = 'a';
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

尽管如此,似乎绝对没有办法告诉GCC/Clang甚至发出最轻微的警告(-Wall -Wextra -pedantic -std=c11不做任何事情).

特别是对于初学者来说,这种情况对于告知有用.即使对于非初学者,在一些稍微不那么明显的情况下,它可能会有所帮助:

void f(char *s) {
  s[0] = '0';
}

int main() {
  char *s = "immutable";
  f("literal"); // oops
  f(s); // oops
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

此外,这将有助于const在C编程中强制实施一些文化.

为什么故意忽视此类案件?标准是否主动禁止在这种情况下发出诊断,或者主要是为了向后兼容(现在尝试强制执行它们会产生太多警告)?

c string compiler-warnings string-literals language-lawyer

18
推荐指数
2
解决办法
453
查看次数

如何从bash为C程序提供输入?

我一直在阅读关于bash脚本和程序测试的文章,但我仍然无法使这段代码工作.

基本上它是一个简单的程序,要求用户提供north east southwest.我启动程序然后它立即要求输入.我只是不能让bash脚本给它任何输入.我试过用echoexpect.

任何帮助表示赞赏.

以下是用于获取玩家输入的函数:

int process_input(Map *game)
{
    printf("\n> ");

    char ch = getchar();
    char a = getchar(); //eat enter

    int damage = rand() % 4;

    switch(ch) {

        case -1:
            printf("you suck\n");
            return 0;
            break;
        case 'n':
            game->proto.move(game, NORTH);
            break;
        case 's':
            game->_(move)(game, SOUTH);
            break;
        case 'e':
            game->_(move)(game, EAST);
            break;
        case 'w':
            game->_(move)(game, WEST);
            break;
        case 'a':
            game->_(attack)(game, damage);
            break;
        case 'l':
                    printf("You can go:\n");
                    if(game->location->north) printf("NORTH\n");
                    if(game->location->south) printf("SOUTH\n");
                    if(game->location->east) …
Run Code Online (Sandbox Code Playgroud)

c bash

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