小编Rob*_*oni的帖子

为什么这个循环无限次运行?for循环中的逗号分隔条件

程序代码:

int main() 
{ 
    int i; 
    for (i = 0; i < 0, 5; i++) 
        printf("%d ", i); 
    return 0; 
} 
Run Code Online (Sandbox Code Playgroud)

上面的循环被无限次执行。

什么i<0,5意思,如何评价?

c

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

按列表中可迭代的最长字符串打印格式

我有两个清单

l1 = ['aaaaaaaaaaaaaaaaa','bb'] 
l2 = ['FY', 'EY'] 
Run Code Online (Sandbox Code Playgroud)

我想遍历两个列表(长度始终相同)并打印由多个选项卡分隔的每个可迭代对象。

例如:

for x,y in zip(l1,l2):
    print(x,'\t'*3,y)


aaaaaaaaaaaaaaaaa            FY
bb           EY
Run Code Online (Sandbox Code Playgroud)

但是,我希望打印由列表中最长的元素标记,以便打印具有标准化格式:

print(formatted_print_tabs)


aaaaaaaaaaaaaaaaa            FY
bb                           EY
Run Code Online (Sandbox Code Playgroud)

我花了一些时间试图弄清楚这一点,但我却摸不着头脑。

python

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

结构变量是否默认初始化?

我没有在网上找到任何关于在 C 中创建对象时会发生什么的信息:比如它们的值被初始化或它们采用垃圾值。

#include <stdio.h> 
struct temp 
{ 
    int a; 
} s;

int main() 
{ 
    printf("%d", s.a); 
}
Run Code Online (Sandbox Code Playgroud)

输出是:0。

那么 0 是垃圾值吗??或者这是一个未定义的行为?

c struct

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

声明指向 NULL 的指针

当我声明:

struct str_node{
    int data;
    struct str_node *next;
}node;

node *head = NULL;
Run Code Online (Sandbox Code Playgroud)

是不是像这样:

head = NULL;
Run Code Online (Sandbox Code Playgroud)

或者

*head = NULL
Run Code Online (Sandbox Code Playgroud)

c struct pointers

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

尝试调用缓冲区溢出的隐藏函数

所以我试图对此代码执行基于堆栈的缓冲区溢出:

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

void win()
{
  printf("well done!");
}

void vulnfunc(){
  char buffer[36];
  gets(buffer);
  printf("Buffer contents are %s\n",buffer);
}

int main(int argc,char**argv){
  vulnfunc();
}

Run Code Online (Sandbox Code Playgroud)

所以我用 44 个字节覆盖了 EIP(缓冲区的 36 个字节和额外的 8 个字节)。然后我得到了函数 win 的地址,将其更改0x53e58955为适当的地址,如下所示

\x55\x89\xe5\x53
Run Code Online (Sandbox Code Playgroud)

当我将两个字符串连接在一起作为输入时,它仍然不会调用该win()函数。我尝试添加"BBBB"填充来填充 ebp,但也没有运气。如果有人可以提供一些建议,我将非常感激。

它在 Ubuntu、x86_64 上运行

c stack-overflow gdb buffer-overflow

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

为什么在声明结构体变量名时不能使用连字符?

结构体生日{ int day:6; }生日;

在声明b-day为结构时,它显示以下错误:

error: expected ':', ',', ';', '}' or '__attribute__' before '-' token|
Run Code Online (Sandbox Code Playgroud)

但是从变量名中删除连字符后它就可以工作了,为什么呢?

c structure

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

结构本身就包含在内。这个怎么理解?

我热衷于其他人的代码并想了解这里发生了什么。这个结构中存储了什么?

这是C中的某种模式吗?

typedef struct _P_NEXT P_NEXT;
struct _P_NEXT {P_NEXT *p_el;};
Run Code Online (Sandbox Code Playgroud)

c c++

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

为什么 C 编程会给出不同的输出?

我得到了意想不到的输出,我无法弄清楚原因。

    #include <stdio.h>

    int main() {
        int a = 0100;
        int b = 010;
        int c = 1111;
        int d = 01111;
        printf("0100 => %d, 010 => %d, 1111 => %d, 01111=> %d\n", a, b, c, d);
   }
Run Code Online (Sandbox Code Playgroud)

输出:

0100 => 64, 010 => 8, 1111 => 1111, 01111=> 585 
Run Code Online (Sandbox Code Playgroud)

为什么会出现这样的输出?

c output

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

标签 统计

c ×7

struct ×2

buffer-overflow ×1

c++ ×1

gdb ×1

output ×1

pointers ×1

python ×1

stack-overflow ×1

structure ×1