小编Pav*_*ath的帖子

消极的向前看

考虑两种printk函数调用 -

TRACE_BR(TRACE ,    "END. rc = %d\n", rc );

TRACE_BR(TRACE, "Value = %s", string );
Run Code Online (Sandbox Code Playgroud)

我正在编写一个正则表达式来匹配像上面这样的函数调用,它们%内部包含字符串参数,但如果字符串END也在里面则不应该匹配.

我用这样的负面预测

TRACE_BR\(TRACE.*?(?!END)%.*
Run Code Online (Sandbox Code Playgroud)

我希望这个正则表达式只匹配第二个函数调用,但它也匹配第一个函数调用.

我猜我在贪婪的地方出错了*.

regex negative-lookahead regex-lookarounds

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

为什么我的C程序没有编译?

我正在用K&R书学习C语言.有一个练习,这里是:"编写一个程序来打印超过80个字符的所有输入行".所以我写了这段代码:

#include <stdio.h>
#include <stdlib.h>

int getline(char s[], int lim);
#define MINLINE 80
#define MAXLINE 1000
/*
 * 
 */
int main(int argc, char** argv) {
    int len; //current line length
    char line[MAXLINE]; //current input line
    int proceed=0;

    while((len=getline(line, MAXLINE))>0) 
        if(line[len-1]!='\n'){
                printf("%s", line);
                proceed=1;}
        else if(proceed==1){
                printf("%s", line);
                proceed=0;}
        else if(len>MINLINE){
                printf("%s", line);
        }
        return 0;



}

int getline(char s[], int lim){
    int i, c;
    for(i=0; i<lim-1 && (c=getline())!='*' && c!='\n'; i++){
        s[i]=c;
    }  
    if(c=='\n'){
        if(i<=lim-1){
        s[i]=c;}
    i++;}
    s[i]='\0';
    return i; …
Run Code Online (Sandbox Code Playgroud)

c

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

使用task_for_pid()进行越狱开发者iPhone

  1. 我想使用task_for_pid()并附加到另一个进程,然后在iOS系统上更改其内存.我可以在授权服务API的帮助下在OS X上成功完成,但在iOS上,task_for_pid()始终返回KERN_FAILURE.我需要get task_for_pid()运行在root下的越狱iPhone上工作.正如"身份验证"中所述,iOS不提供此API,我该怎么办?

  2. 我可以在iOS模拟器上以root身份运行,如何测试需要以root身份运行的应用程序?

memory macos kernel jailbreak ios

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

从函数指针调用函数而不分配?

通常我们必须这样做以从函数指针调用函数:

int foo()
{
}

int main()
{
    int (*pFoo)() = foo; // pFoo points to function foo()
    foo();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在Linux内核代码中,sched_class有许多函数指针:

struct sched_class {
        const struct sched_class *next;

        void (*enqueue_task) (struct rq *rq, struct task_struct *p, int flags);
        void (*dequeue_task) (struct rq *rq, struct task_struct *p, int flags);
        void (*yield_task) (struct rq *rq);
        bool (*yield_to_task) (struct rq *rq, struct task_struct *p, bool preempt);
        .....
}
Run Code Online (Sandbox Code Playgroud)

pick_next_task函数中,它定义了一个本地的sched_classnamed 实例class,并直接调用其中的函数,而不分配具有相同签名的外部函数(从...开始for_each_class):

static …
Run Code Online (Sandbox Code Playgroud)

c linux kernel linux-kernel

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

负整数隐式转换为无符号类型

如何为以下内容设置/取消设置枚举值.使用gcc,我收到了这个恼人的警告:

test.c:37: warning: negative integer implicitly converted to unsigned type
test.c:39: warning: negative integer implicitly converted to unsigned type
test.c:41: warning: negative integer implicitly converted to unsigned type
test.c:43: warning: negative integer implicitly converted to unsigned type
Run Code Online (Sandbox Code Playgroud)

代码是:

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

typedef enum {
 ONE = 0x1,
 TWO = 0x2,
 THREE = 0x4,
 FOUR = 0x8,
} options;

static const char *byte_to_binary (int x)
{
  int z;
  static char b[9];
  b[0] = '\0';

  for (z = 256; z > …
Run Code Online (Sandbox Code Playgroud)

c enums gcc bit-fields

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

将浮点变量显示为十六进制整数会拧紧相邻整数

我有这个简单的程序

#include <stdio.h>
int main(void)
{
 unsigned int a = 0x120;
 float b = 1.2;
 printf("%X %X\n", b, a);
 return 0;
}
Run Code Online (Sandbox Code Playgroud)

我期待输出

some-value 120  (some-value will depend on the bit pattern of `float b` )
Run Code Online (Sandbox Code Playgroud)

但我明白了

40000000 3FF33333
Run Code Online (Sandbox Code Playgroud)

为什么a搞砸的价值?%X把其作为参数signed int,因此它应该检索从堆叠的4个字节并打印的calue b然后获取下一个4个字节打印值的a哪个是0x120

c floating-point printf hex format-specifiers

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

分叉过程并等待孩子退出

Iam用C语言编程并试图学习分支过程的概念,但是我对以下程序的输出感到困惑.所以我需要对此进行一些解释才能继续.

        int main() {
            pid_t pid;
 24         int status, died;
 25         switch(pid = fork()){
 26                 case -1: printf("Can't fork\n");
 27                          exit(-1);
 28                 
 29                 case 0 : printf(" Child is sleeping ...\n"); 
 30                          sleep(5); // this is the code the child runs
 31                          //exit(3); 
 32                          
 33                 default:
 34                          printf("Process : parent is waiting for child to exit\n");
 35                          died = wait(&status); // this is the code the parent runs 
 36                          printf("Child's process table cleared...\n");
 37         }
 38         return 0;
 39 } …
Run Code Online (Sandbox Code Playgroud)

c linux fork process linux-kernel

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

strtoull"似乎"返回错误的值

基本上我试图将十六进制字符串转换为unsigned long long values使用strtoull.这是简单的代码

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


int main ()
{
    unsigned long long val =0;

    //printf("sizeof(unsigned long long)=%d\n", sizeof(unsigned long long));

    val = strtoull("0x8004298c42ULL",NULL,16);

    printf("%llx\n", val);

    if ( val == 0x8004298c42ULL)
    {
        printf("Success\n");
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我希望val打印,8004298c42但它打印4298c42.将8被砍掉.我试着不0x和没有ULL了.但结果仍然相同.为了确保我没有错过一些简单的printf格式说明符,我甚至检查了内容val.仍然没有用(即没有打印成功)

我想我错过了一些微不足道但却不知道的东西!

c printf strtoull

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

C中的格式说明符 - %s内的%s

我有类似的东西

char string[]="My name is %s";

printf("%s",string,"Tom");
Run Code Online (Sandbox Code Playgroud)

我期待输出,My name is Tom但我得到了My name is %s

我尝试逃避%角色,但它有效.

这里出了什么问题?我怎么会有%s一个%s

c format-specifiers

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