小编Rag*_*ddy的帖子

sizeof运算符的实现

我试过实现sizeof运算符..我已经这样做了..

#define my_sizeof(x) ((&x + 1) - &x)
Run Code Online (Sandbox Code Playgroud)

但它总是最终为任何一种数据类型提供结果为'1'.

然后我用谷歌搜索了它...我发现代码被类型化了

#define my_size(x) ((char *)(&x + 1) - (char *)&x)
Run Code Online (Sandbox Code Playgroud)

并且代码正在工作,如果它是typecasted ...我不明白为什么..这个代码也完美地填充结构..

它也在努力

#define my_sizeof(x) (unsigned int)(&x + 1) - (unsigned int)(&x)
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释一下,如果进行类型转换,如果不进行类型转换,它是如何工作的?

提前致谢..

c linux gcc sizeof typecast-operator

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

如何使用脚本来查询android sqlite数据库

Android保存在数据库文件中的设置/data/data/com.android.providers.settings/databases/settings.db.

Android sqlite3用作数据库.我们可以adb用来管理数据库文件.我想知道是否有办法在perl/python脚本中运行所有这些命令以自动执行整个查询过程?

$adb shell 
$sqlite3 /data/data/com.android.providers.settings/databases/settings.db 
Run Code Online (Sandbox Code Playgroud)

上面的命令将打开设置数据库.然后你将进入sqlite3命令行.

首先检查数据库中存在多少个表.这里列出了结果.

sqlite> .tables

android_metadata   bookmarks          gservices        
bluetooth_devices  favorites          system  
Run Code Online (Sandbox Code Playgroud)

我想要获取的设置(例如volume_alarm)位于"system"表中,.dump命令将列出表中的所有项目.

sqlite> .dump system
BEGIN TRANSACTION;
CREATE TABLE system (_id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT UNIQUE ON CONFLICT REPLACE,value TEXT);
INSERT INTO "system" VALUES(3,’volume_system’,’5?);
INSERT INTO "system" VALUES(4,’volume_voice’,’4?);
INSERT INTO "system" VALUES(5,’volume_alarm’,’6?);
.....
$ select value from system where name ='volume_alarm';
select value from system where name ='volume_alarm'
6
$.quit;
Run Code Online (Sandbox Code Playgroud)

python sqlite perl android adb

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

如何知道寄存器变量存储在哪里?

我知道寄存器变量存储在CPU寄存器中.

如果CPU寄存器忙/满,则相同的变量存储在堆栈中.

我怎么知道变量存储在堆栈或CPU寄存器中?

c

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

C中的字符串反向程序

我已经写了一个程序来反转一个字符串..但它不工作..它是打印扫描相同的字符串..代码有什么问题?

#include <stdio.h>
#include <stdlib.h>
char *strrev(char *s)
{
        char *temp = s;
        char *result = s;
        char t;
        int l = 0, i;
        while (*temp) {
                l++;
                temp++;
        }
        temp--;
        for (i = 0; i < l; i++) {
                t = *temp;
                *temp = *s;
                *s = t;
                s++;
                temp--;
        }
        return result;
}

int main()
{
        char *str;
        str = malloc(50);
        printf("Enter a string: ");
        scanf("%s", str);
        printf("%s\n\n", strrev(str));
        return 0;
}
Run Code Online (Sandbox Code Playgroud)

c string gcc

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

C中的按位运算符

我已经编写了一个用于交换位位置(源位和目标位)的代码..它工作正常..但是有没有优化的代码来执行此操作?

int bit_swap(int num, int sbit, int dbit)
{
if(num & (1 << sbit) == num & (1 << dbit))
return num;
else
return (num ^ ((1 << sbit) | (1 << dbit)));
}
Run Code Online (Sandbox Code Playgroud)

这里.. num是输入数字.sbit是源位位置,dbit是目标位位置.

有没有办法在不使用ifelse的情况下在一行中编写此代码

c c++ gcc bit-manipulation bitwise-operators

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

我无法重启我的dnsmasq服务,所以我的雾服务器不会工作

我有一个fog server工作设置,偶尔我们无用的互联网失败,我不得不重置dnsmasq它让它再次工作,(没有dhcp服务器设置,不能修改集线器设置所以不会这样做)每当我尝试sudo dnsmasq restart,我得到的消息 - junk found in command line,

首先,有些人可以用简单的语言向我解释这实际上意味着什么,因为我不是Linux专家,没有人似乎有一个简单的解释,这是什么,

其次,我一直使用另一个雾论坛上发布的命令来纠正这个错误

sudo /etc/init.d/dnsmasq restart
Run Code Online (Sandbox Code Playgroud)

这总是很完美但是现在当我尝试运行这个命令时,我收到了消息 command not found

linux ubuntu dnsmasq sudo

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

将服务器的输出重定向到客户端套接字

我正在通过套接字编程并很好地实现它..现在我想在其中实现一个系统调用ls..

当在客户端机器ls上给出输入时,服务器的输出应该打印在客户端机器上(即命令应该在服务器端执行,输出应该重定向到客户端...)

我如何收集服务器机器的输出?

我只需要提示..谢谢

c sockets linux gcc

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

MIPS:从命令行参数中读取字符串

我是大会的新手.我在从命令行参数中读取字符串时遇到了一些麻烦.

我想将thisismymessage第二个参数中的字符串读入缓冲区.

我想过使用SYSCALL,但不知道如何使用.

$ spim -f program.s file thisismymessage
Run Code Online (Sandbox Code Playgroud)

assembly mips computer-architecture spim command-line-arguments

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

将多个 string.match 函数合并到一行中

我有一个功能,需要检查特殊字符并在找到特殊字符时将其破坏。

这是我尝试过的。

local text = "h!ello\"wor%ld_t@xt.p^*sp&ki#$te"

if (string.match(text, "&") ~= nil) then
  print("Invalid Character \n")
end 

if (string.match(text, "\"") ~= nil) then
  print("Invalid Character \n")
end 

if (string.match(text, "#") ~= nil) then
  print("Invalid Character \n")
end 

if (string.match(text, "$") ~= nil) then
  print("Invalid Character \n")
end 

if (string.match(text, "@") ~= nil) then
  print("Invalid Character \n")
end

if (string.match(text, "%%") ~= nil) then
  print("Invalid Character \n")
end

if (string.match(text, "!") ~= nil) then
  print("Invalid Character \n")
end

if (string.match(text, "^") ~= …
Run Code Online (Sandbox Code Playgroud)

string lua lua-patterns

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

使用extern关键字

我在一个文件中定义了一个变量,并使用extern关键字在另一个文件中声明了它.但我已用不同的数据类型声明它..

file1.c  
    char i;
    main()  
    {   
        foo();  
    }
Run Code Online (Sandbox Code Playgroud)

file2.c中

void foo()  
{  
    extern int i;  
    i = 130;  
    printf("%d", i);  
}
Run Code Online (Sandbox Code Playgroud)

在上面的程序中,内存在main函数中为'i'分配为char数据类型.执行后的答案应该是否定的(-127).但它打印130.无论在foo()函数中分配给'i'的值是什么,不仅打印130.

c gcc

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

strncpy的实现

我曾尝试实现字符串 n 复制功能。我已经成功了,但我试图优化我的代码,但它不起作用。

char *mystrncpy(char *dst, const char *src, size_t n)
{
   int i;
   char *temp;
   temp = dst;  
   for (i = 0; i < n; i++)
      *dst++ = *src++;
   return temp;
}
Run Code Online (Sandbox Code Playgroud)

上面的代码工作正常。

但是下面的有一些问题。它只是srcn我传递的任何值返回字符串。

char *my_strncpy(char *dst, const char*src, size_t n)
{
   char *temp = dst;
   while ((*dst++ = *src++) && (--n));
   return temp;
}
Run Code Online (Sandbox Code Playgroud)

c linux string gcc

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

为什么这个程序会进入无限循环?

main()
{
int i;
int a[5];
for (i = 1; i <= 5; i++)
    a[i] = 0;
printf("Hello, how are you? ");
}
Run Code Online (Sandbox Code Playgroud)

为什么程序没有退出循环?

c

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