小编Jac*_*ack的帖子

按地址访问struct成员

考虑具有两个整数类型成员的结构.我希望通过地址获得两位成员.我可以成功获得第一个,但是我的第二个错误.我相信这是垃圾价值.这是我的代码:

#include <stdio.h>

typedef struct { int a; int b; } foo_t;

int main(int argc, char **argv)
{

  foo_t f;
  f.a = 2;
  f.b = 4;
  int a = ((int)(*(int*) &f));
  int b = ((int)(*(((int*)(&f + sizeof(int)))))); 
  printf("%d ..%d\n", a, b);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

我越来越:

2 ..1

谁能解释我哪里出错了?

c struct pointers

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

比较两个字符串(nul-terminated)而不是逐个字节地进行比较?

就像strlen()glibc执行一个很好的位操作和每次检查4个字节使得函数如此之快,与逐字节例程相比,正如大多数其他人所做的那样,是否有类似的东西来比较汇编中的两个字符串?我正在阅读有关C语言代码实现的一些页面,对字符串处理部分非常感兴趣,但我仍然没有找到这样的.我必须尽快使这个功能,因为它是我的应用程序的核心.(不建议哈希表)

欢迎任何汇编.但是我对intel的汇编语法有点熟悉,如果你要提供的汇编有所不同,请评论它.

string algorithm assembly string-comparison

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

什么是-ll gcc的旗帜?

我正在尝试编译一个有-ll标志但gcc无法找到的程序.什么是l-l一个真正的图书馆或这是一个错字?很难在谷歌上找到关于这个的信息.这个术语是"模糊的".

linux gcc compiler-flags

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

'constexpr'非静态成员函数在C++ 1y中不会隐式'const'; 添加'const'以避免行为发生变化

clang ++给出以下警告(见下面的代码):

'constexpr'非静态成员函数在C++ 1y中不会隐式'const'; 添加'const'以避免行为发生变化

应该在哪里const添加?const constexpr size_t getSize() {再发一次警告:

返回类型的'const'类型限定符无效

码:

constexpr size_t getSize()
{
    return sizeof(header);
}
Run Code Online (Sandbox Code Playgroud)

const clang constexpr c++11 c++14

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

如何在WebBrowser中确认脚本错误对话框?

我需要以编程方式(即回答"是")向WebBrowser中的脚本错误对话框确认,否则页面将停止工作.我没有代码可以展示,因为我不知道如何做到这一点.

这是我正在谈论的对话框中的图像:

在此输入图像描述(采取从这个,顺便说一句)

c# internet-explorer webbrowser-control winforms

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

分发 clickonce 应用程序的文件

我确实部署了一个clickonce应用程序,并将文件成功上传到服务器。我选择在应用程序打开之前检查更新。

我不太明白的是,我必须将哪些文件分发给最终用户,并且单击一次完成其工作,我必须像通常那样运行.applicationsteup.exe(从文件夹)或我的应用程序可执行文件吗?app.publish

它会生成一个在发布目录中.application调用的文件夹。app.publish其中app.publish有一些文件,其中包括我的应用程序可执行文件的副本(但不是依赖文件,如 dll 等), .application以及setup.exe. 每个文件的用途是什么?

c# windows clickonce winforms

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

从套接字缓冲区逐行读取

我想编写一个函数,该函数从套接字缓冲区中逐行读取套接字缓冲区,而套接字缓冲区是read()unistd.h标头中的函数的第三个参数获得的。

我写了这个:

int sgetline(int fd, char ** out)
{
    int buf_size = 128;
    int bytesloaded = 0;
    char buf[2];
    char * buffer = malloc(buf_size);
    char * newbuf;
    int size = 0;

    assert(NULL != buffer);

    while( read(fd, buf, 1) > 0 )
    {
        strcat(buffer, buf);
        buf[1] = '\0';
        bytesloaded += strlen(buf);
        size = size + buf_size;

        if(buf[0] == '\n')
        {
            *out = buffer; 
            return bytesloaded;
        }

        if(bytesloaded >= size)
        {
            size = size + buf_size;
            newbuf = …
Run Code Online (Sandbox Code Playgroud)

c sockets string split

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

尝试缓冲由 malloc() 分配的溢出值

我对 malloc() 函数有点困惑。

如果sizeof(char)1 byte并且malloc()函数接受参数中的 N 个字节进行分配,那么如果我这样做:

char* buffer = malloc(3);
Run Code Online (Sandbox Code Playgroud)

我分配了一个可以存储3个字符的缓冲区,对吧?

char* s = malloc(3);
int i = 0;
while(i < 1024) { s[i] = 'b'; i++; }
s[i++] = '$';
s[i] = '\0';
printf("%s\n",s);
Run Code Online (Sandbox Code Playgroud)

效果很好。并将 1024 存储b'ss.

bbbb[...]$
Run Code Online (Sandbox Code Playgroud)

为什么上面的代码不会导致缓冲区溢出?谁能解释一下吗?

c malloc memory-management

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

如何复制具有 const unsigned char * 类型的值?

我想将 SQLite 数据库中的一些值存储在缓冲区中,但 qlite3_column_text() 具有以下原型:

const unsigned char *sqlite3_column_text(sqlite3_stmt*, int iCol);
Run Code Online (Sandbox Code Playgroud)

然后当我这样做时:

out[size] = sqlite3_column_text(stmt, 0);
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

assignment discards qualifiers from pointer target type
Run Code Online (Sandbox Code Playgroud)

我也尝试使用strcpy(),但收到相同的错误消息。

c sqlite constants char

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

linux上的places.sqlite数据库在哪里?

我在哪里可以找到places.sqliteUbuntu/Linux 10.4、Firefox 5.0 (X11) 上的文件数据库?我想使用 C 读取 firefox 上的打开网址。但我没有找到该文件。我尝试按照这些说明进行操作,但文件夹.mozilla中不存在该/home/<user>/目录。

c firefox

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