小编Jan*_*son的帖子

在C中放气和膨胀(zlib.h)

我正在尝试实现zlib.h deflate和inflate函数来压缩和解压缩char数组(而不是文件).

我想知道以下语法是否正确?我错过了什么或定义错误的东西?

char a[50] = "Hello World!";
char b[50];
char c[50];

// deflate
// zlib struct
z_stream defstream;
defstream.zalloc = Z_NULL;
defstream.zfree = Z_NULL;
defstream.opaque = Z_NULL;
defstream.avail_in = (uInt)sizeof(a); // size of input
defstream.next_in = (Bytef *)a; // input char array
defstream.avail_out = (uInt)sizeof(b); // size of output
defstream.next_out = (Bytef *)b; // output char array

deflateInit(&defstream, Z_DEFAULT_COMPRESSION);
deflate(&defstream, Z_FINISH);
deflateEnd(&defstream);

printf("Deflate:\n%lu\n%s\n", strlen(b), b);

// inflate
// zlib struct
z_stream infstream;
infstream.zalloc = Z_NULL;
infstream.zfree = Z_NULL;
infstream.opaque …
Run Code Online (Sandbox Code Playgroud)

c compression zlib deflate

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

(Un/De)用bash压缩字符串?

是否可以使用stdin/stdout压缩/解压缩bash中的字符串?

我试过这个,但显然不支持?

hey=$(echo "hello world" | gzip -cf)
echo $hey # returns a compressed string
echo $hey | gzip -cfd
gzip: stdin is a multi-part gzip file -- not supported
Run Code Online (Sandbox Code Playgroud)

我不熟悉linux,但我读了其他压缩实用程序手册页,但找不到解决方案?

linux compression bash gzip

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

像桌子一样但是与CSS对齐?

是否可以像桌子一样对齐以下两行?第一行是a,h2因为它是标题,其余是列表.第一列应该很宽,但其余部分可以与文本内部一样宽.列必须填充宽度div.

<div>
<h2 class="header1">
<span class="span1">one</span>
<span class="span2">two</span>
<span class="span3">three</span>
<span class="span4">four</span>
</h2>
<ul><li>
<span class="span5">five</span>
<span class="span6">six</span>
<span class="span7">seven</span>
<span class="span8">eight</span>
</li></ul>
</div>
Run Code Online (Sandbox Code Playgroud)
div {width: 500px;}
h2 span, li span {float: left; width: auto; white-space: nowrap;}
Run Code Online (Sandbox Code Playgroud)

例:

例

html css layout

7
推荐指数
2
解决办法
6211
查看次数

-fstack-protector,-fstack-protector-all和-fmudflap

-fstack-protector和-fstack-protector-all是保护基于堆的内存分配还是仅保护基于堆栈的内存分配?

前2和-fmudflap有什么区别?

关于哪个更适合调试的任何建议?

(我不确定gcc手册页是否足够清晰,或者我根本不理解它......)

char foobar[10]; // stack-based

char *foobar = malloc(10); // heap-based
Run Code Online (Sandbox Code Playgroud)

c linux gcc

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

通过引用和值传递int的好处?

  1. 通过引用而不是按值传递ints是否有性能优势?我这样说是因为如果你通过引用传递你正在创建一个4字节的指针,但是如果你通过值传递,你仍然会创建一个4字节的值副本.所以他们都占用了额外的4个字节,对吧?
  2. 是否可以使用cast:(int*)通过引用传递int文字?或者你必须将指针传递给int?请参阅以下示例代码:

    int func1(int *a){
        (*a)++; // edited from comment by Joachim Pileborg
        printf("%i\n", *a);
        return 0;
    }
    
    int func2(int a){
        a++;
        printf("%i\n", a);
        return 0;
    }
    
    int main(void){
        func1(&(int *)5); // an int literal passed by reference using a cast ?
        func2(5);
        return 0;
    }
    
    Run Code Online (Sandbox Code Playgroud)

c

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

C在特定IP上打开套接字

可以使用2种不同的静态IP(IPv4)访问我的网站.

是否可以打开到另一台服务器的TCP连接,指定哪两个IP用作返回地址?

xxxx(我的服务器)=> zzzz(目标服务器)
yyyy(我的服务器)=> zzzz(目标服务器)

为简单起见,省略了此示例中的错误检查等:

struct addrinfo hints, *result;
hints.ai_flags = 0;
hints.ai_family = AF_INET;
hints.ai_socktype = SOCK_STREAM;
hints.ai_protocol = IPPROTO_TCP;
hints.ai_addrlen = 0;
hints.ai_canonname = NULL;
hints.ai_addr = NULL;
hints.ai_next = NULL;

getaddrinfo(domain, "80", &hints, &result);

socket(result->ai_family, result->ai_socktype, result->ai_protocol);
Run Code Online (Sandbox Code Playgroud)

c sockets linux posix

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

标签 统计

c ×4

linux ×3

compression ×2

bash ×1

css ×1

deflate ×1

gcc ×1

gzip ×1

html ×1

layout ×1

posix ×1

sockets ×1

zlib ×1