小编Dee*_*epu的帖子

我们如何确保缓存以减少 SQLite 数据库的文件系统写入周期

我想在SQLite数据库中实现缓存。我的主要目标是将数据写入RAM,当缓存已满时,我想将所有数据刷新到磁盘数据库。我想知道这是否可能?如果可能的话我可以有一些示例代码吗?

谢谢

c c++ linux sqlite

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

如何编写一个简单的基于文本的协议,最好是在C中

我想编写一个客户端程序,通过标准与应用程序服务器通信TCP/IP.客户端可以与应用程序服务器通信,并通过简单地使用基于特定文本的协议进行身份验证.流量将被加密,但不会username/password.如果另一个应用程序尝试与应用程序服务器通信,并且应用程序未使用正确的基于文本的协议,则应用程序服务器将以静默方式丢弃数据包.

等待建议.

c security algorithm protocols

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

左值在C中返回指针

我试着执行以下代码,

int val=10;
printf("%d",++val++);
Run Code Online (Sandbox Code Playgroud)

正如所料,我收到以下错误消息," lvalue required as increment operand".但是,当我做出以下更改时,程序运行正常.

int val=10;
int *ptr=&val;
printf("%d",++*ptr++);
Run Code Online (Sandbox Code Playgroud)

该计划的产出为11.输出值并不令人惊讶.

但整个构造++*ptr++是一个lvalue而不是一个rvalue混乱.

我打印了ptr之前和之后的内容如下,

printf("%u\n",ptr);
printf("%d",++*ptr++);
printf("\n%d\n",ptr);
Run Code Online (Sandbox Code Playgroud)

22935322293536是在屏幕上打印的地址.所以显然ptr已经增加并且涉及指针添加.

输出有意义除了这样的事实*ptr检索其地址被存储在可变的含量ptr10++*ptr它递增到11.这绝对是一个rvalue.但是后期增量(++)已经被ptr我相信了.为什么这样?在C中管理此类绑定的规则是什么?

c

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

.COM和.EXE之间的区别

我有一篇文章说,.COM文件比小文件更适合小应用程序.EXE.什么是.COM文件?我们如何创建.COM文件?它们如何比.EXE文件更好?我还想知道.COM文件是否仍然被广泛使用?

有什么建议.

c

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

如何仅使用for循环在C中向后打印输入的字符串

我想向后打印一个字符串.但我的代码似乎倒数从数组中的最后一个字母到数组中的第一个字母的字母表,而不是倒数数组本身并吐出数组中的每个字母.

我的代码,

   #include <stdio.h>
   #include <string.h>

   int main(void) {

char word[50];
char end;
char x;

printf("Enter a word and I'll give it to you backwards: ");

scanf("%s", word);

end = strlen(word) - 1;

for (x = word[end]; x >= word[0]; x--) {
    printf("%c", x);
}

return 0;
}
Run Code Online (Sandbox Code Playgroud)

有什么建议?谢谢.

c arrays for-loop

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

将ac十六进制值转换为char*

如何将hexc中的值转换为等效char*值.例如,如果十六进制值是1df2char*,也应该包含1df2.

我使用的VinC编译器和VinL链接器VNC2 USB ChipFTDI.它有以下头文件; stdlib,stdiostring.这些是主要c库的子集,并没有明显的答案,如snprintfsprintf.

文档说以下类型是有效的,

对于在整个内核和驱动程序中使用的变量和函数类型,存在某些定义.它们可用于vos.h头文件中的应用程序.

空指针和逻辑定义:

#define NULL                0
#define TRUE                1
#define FALSE               0
Run Code Online (Sandbox Code Playgroud)

变量类型定义:

#define uint8               unsigned char
#define int8                char
#define int16               short
#define uint16              unsigned short
#define uint32              unsigned int
#define pvoid               unsigned char *
Run Code Online (Sandbox Code Playgroud)

功能类型定义:

typedef uint8 (*PF)(uint8);
typedef void (*PF_OPEN)(void *);
typedef void (*PF_CLOSE)(void *); …
Run Code Online (Sandbox Code Playgroud)

c hex char

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

IsBadReadPtr类似于Unix

在Unix中是否有类似于IsBadReadPtr的函数?至少IsBadReadPtr的一些功能?我想编写一个程序,如果某个进程发生了不好的事情(如SIGSEGV),它会做出反应并恢复一些信息.但我想检查指针,以确保数据没有损坏,看看它们是否可以安全访问.否则崩溃处理程序本身将崩溃,从而变得无用.

有什么建议?

c unix debugging libc

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

CUDA上的2D数组

我想动态分配全局2D数组CUDA.我怎样才能做到这一点?

在我的主要部分,我Kernel在循环中呼唤我.但在我调用内核之前,我需要在内核上分配一些内存GPU.在内核调用之后,从GPU向CPU发送单个整数以通知问题是否已解决.
如果问题没有解决,我将不会释放旧内存,因为还需要它,我应该GPU为内核分配新内存并再次调用内核.

显示一个sudocode:

int n=0,i=0;
while(n==0)
{
    //allocate 2d memory for MEM[i++] 
    //call kernel(MEM,i)
    // get n from kernel       
}


__global__ void kernerl(Mem,int i)
{
    Mem[0][5]=1;
    Mem[1][0]=Mem[0][5]+23;//can use this when MEM[1] is allocated before kernel call
}
Run Code Online (Sandbox Code Playgroud)

有什么建议?谢谢.

c cuda

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

C中的浮点评估顺序

我在Windows 7上使用Code :: Blocks 10.05.

我编写了以下程序,

#include<stdio.h>

int main()
{
 float f=1.5;
 printf("%f\n",(f-1)*1/2);
 return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出为0.250000.我理解如下,

因为f浮点数(f-1)返回浮点值0.500000并且整个表达式升级为浮点运算,因此1/2也被视为浮点数得到0.500000因此得到结果.

还有以下声明,

 float f=1.5;
 printf("%f\n",1/2*(f-1));
Run Code Online (Sandbox Code Playgroud)

给了0.000000作为答案.这里表达式1/2执行整数除法.在这里,我期望(f-1)首先进行评估,并将整个表达式升级为浮点运算.

我再次想到,因为波兰语符号是,

* / 1 2 - f 1
Run Code Online (Sandbox Code Playgroud)

分裂是第一次执行的操作,因此是结果.我对这个假设是否正确?

最后,以下陈述无视所有逻辑,

 float f=1.5;
 printf("%f\n",(f-1)*(1/2));
Run Code Online (Sandbox Code Playgroud)

输出是0.000000,但这里波兰表示法是,

* - f 1 / 1 2 
Run Code Online (Sandbox Code Playgroud)

所以(f-1)应该首先进行评估,因此整个表达式升级到浮点运算,输出应该是0.250000.

我哪里做错了?这是否与运营商的评估顺序有关*?C中的表达是否含糊不清?

c

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

深度优先搜索的实现和改进

我已经DFS按照它的方式进行编码,并没有提及任何教科书或伪代码的想法.我想我有一些代码行正在进行不必要的计算.有关降低算法复杂度的任何想法?

vector<int>visited;

bool isFound(vector<int>vec,int value)
{
    if(std::find(vec.begin(),vec.end(),value)==vec.end())
        return false;
    else
        return true;
}

void dfs(int **graph,int numOfNodes,int node)
{
    if(isFound(visited,node)==false)
        visited.push_back(node);
    vector<int>neighbours;
    for(int i=0;i<numOfNodes;i++)
        if(graph[node][i]==1)
            neighbours.push_back(i);

    for(int i=0;i<neighbours.size();i++)
        if(isFound(visited,neighbours[i])==false)
            dfs(graph,numOfNodes,neighbours[i]);
}

void depthFirstSearch(int **graph,int numOfNodes)
{
    for(int i=0;i<numOfNodes;i++)
        dfs(graph,numOfNodes,i);
}
Run Code Online (Sandbox Code Playgroud)

PS: 有人可以给我发一个链接教我如何插入高质量的C++代码.我尝试过语法高亮,但是没有用.

c++ algorithm performance graph depth-first-search

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

C编程语言(scanf)

我使用以下scanf()语句读取了包含空格的字符串.

scanf("%[^\n]", &stringVariableName);
Run Code Online (Sandbox Code Playgroud)

控制字符串是什么意思[^\n]

用这样的白色空间读取字符串是否可行?

c whitespace scanf

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