小编Iu *_*Tub的帖子

为什么printf具有单个参数(没有转换说明符)?

在我正在阅读的一本书中,写printf了一个单一的参数(没有转换说明符)被弃用了.它建议替代

printf("Hello World!");
Run Code Online (Sandbox Code Playgroud)

puts("Hello World!");
Run Code Online (Sandbox Code Playgroud)

要么

printf("%s", "Hello World!");
Run Code Online (Sandbox Code Playgroud)

谁能告诉我为什么printf("Hello World!");是错的?书中写道它包含漏洞.这些漏洞是什么?

c security printf format-specifiers puts

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

带有副本集的 Mongo 容器,在 docker-compose 中只有一个节点

我想创建一个带有 Mongo 实例的 Docker 容器。特别是,我想创建一个只有一个节点的副本集(因为我对事务感兴趣并且它们仅可用于副本集)。

文件

FROM mongo
RUN echo "rs.initiate();" > /docker-entrypoint-initdb.d/replica-init.js
CMD ["--replSet", "rs0"]
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml

version: "3"
services:
  db:
    build:
      dockerfile: Dockerfile
      context: .
    ports:
      - "27017:27017"
Run Code Online (Sandbox Code Playgroud)

如果我单独使用 Dockerfile 一切都很好,而如果我使用 docker-compose 它不起作用:事实上,如果我然后登录到容器,我得到的提示rs0:OTHER>rs0:PRIMARY>.

我查阅了这些链接,但提出的解决方案不起作用:

https://github.com/docker-library/mongo/issues/246#issuecomment-382072843 https://github.com/docker-library/mongo/issues/249#issuecomment-381786889

mongodb docker replicaset docker-compose

5
推荐指数
3
解决办法
3699
查看次数

C:const还是定义?有什么区别以及为什么第二个报告错误?

#include <stdio.h>
#include <stdlib.h>
#define MAX 15 //line that give problems

int linearSearch(int v[], int MAX, int valore);

int main()
{
    int ris, valore, v[]={1,1,1,1,1,1,1,1,1,12,1,1,1,1,1};
    scanf("%d", &valore);
    ris = linearSearch(v, MAX, valore);
    printf("%d", ris);
    return 0;
}

int linearSearch(int v[], int MAX, int valore)
{
    int i;
    for (i=0;i<MAX;i++)
    {
        if(valore==v[i])
            return i;
    }
    return -1;    
}
Run Code Online (Sandbox Code Playgroud)

为什么这段代码在编译时报告错误?如果我用预处理器指令替换它,为什么它运行正常

const int MAX = 15;
Run Code Online (Sandbox Code Playgroud)

c compiler-errors const constants c-preprocessor

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