小编har*_*ari的帖子

将struct初始化/重置为零/ null

struct x {
    char a[10];
    char b[20];
    int i;
    char *c;
    char *d[10];
};
Run Code Online (Sandbox Code Playgroud)

我正在填充此结构,然后使用值.在下一次迭代中,我想在重新开始重用之前0null之前重置所有字段.

我怎样才能做到这一点?我可以使用memset或者必须通过所有成员然后单独进行吗?

c struct initialization

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

Perl中的字符串比较与"eq"vs"=="

我是(一个完整的Perl新手)在if声明中进行字符串比较:

如果我这样做:

if ($str1 == "taste" && $str2 == "waste") { }
Run Code Online (Sandbox Code Playgroud)

我看到了正确的结果(即如果条件匹配,则评估"then"块).但我看到这些警告:

参数"taste"在行号x的数字eq(==)中不是数字.
参数"waste"在行号x的数字eq(==)中不是数字.

但如果我这样做:

if ($str1 eq "taste" && $str2 eq "waste") { }
Run Code Online (Sandbox Code Playgroud)

即使满足if条件,它也不会评估"then"块.

在这里,$str1taste$str2waste.

我该怎么解决这个问题?

string perl

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

向信号处理程序提供/传递参数

我可以向信号处理程序提供/传递任何参数吗?

/* Signal handling */
struct sigaction act;
act.sa_handler = signal_handler;
/* some more settings */
Run Code Online (Sandbox Code Playgroud)

现在,处理程序看起来像这样:

void signal_handler(int signo) {
    /* some code */
}
Run Code Online (Sandbox Code Playgroud)

如果我想做一些特殊的事情,即删除临时文件,我可以将这些文件作为参数提供给这个处理程序吗?

编辑0:谢谢你的回答.我们通常避免/不鼓励使用全局变量.在这种情况下,如果你有一个庞大的程序,在不同的地方可能会出现问题,你可能需要进行大量的清理工作.为什么API以这种方式设计?

c signals signal-handling

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

strlen没有检查NULL

为什么strlen()不检查NULL?

如果我这样做strlen(NULL),就会出现故障.

试图了解它背后的基本原理(如果有的话).

c segmentation-fault strlen

25
推荐指数
4
解决办法
5万
查看次数

什么是tlv(标签长度值)?

什么是tlv?

将钩子(函数)放在代码而不是if/else中?

如果我在不同的平台上运行一段代码,在代码的不同位置,我可以放置tlv函数钩子来识别我所在的平台并做相应的操作?或类似的东西?

好处可以更清洁代码?容易维护?添加新平台时,只需更改tlv代码而不是源代码?

我在这里可能完全错了.

tlv

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

sizeof表示null终止的const char*

const char* a;
Run Code Online (Sandbox Code Playgroud)

如何确保字符串'a'为空终止?当a ="abcd"并且我做sizeof(a)时,我得到4.这是否意味着它不是以null结尾?如果是的话,我会得到5?

c string char

20
推荐指数
4
解决办法
5万
查看次数

在我的情况下strncpy或strlcpy

我应该怎么用,当我要复制src_strdst_arr,为什么?

char dst_arr[10];
char *src_str = "hello";
Run Code Online (Sandbox Code Playgroud)

PS:我的头正在读的东西很多关于如何纺纱后比我的电脑硬盘快strncpystrlcpy.

注意:我知道strlcpy无处不在.这不是问题所在.

c copy c-strings strncpy

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

grep是如何工作的?

我试图了解它是如何grep工作的.

当我说grep "hello" *.*,确实grep得到2个参数 - (1)要搜索的字符串,即"你好"和(2)路径*.*?或者shell转换*.*grep可以理解的东西?

我在哪里可以获得源代码grep?我遇到了这个GNUgrep链接.其中一个README文件说它与...不同unix grep.怎么会这样?

我想看一下FreeBSD版本的源代码grep以及它的Linux版本(如果它们不同的话).

c unix shell grep gnu

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

mktime和tm_isdst

我在这里想到了很多不同的看法.

我看了man mktime:

 (A positive or zero value for tm_isdst causes mktime() to presume initially
 that summer time (for example, Daylight Saving Time) is or is not in
 effect for the specified time, respectively.  A negative value for
 tm_isdst causes the mktime() function to attempt to divine whether summer
 time is in effect for the specified time. 
Run Code Online (Sandbox Code Playgroud)

我的问题是,不tm_isdst应该-1让系统决定它的dst是否与代码成为dst不可知的那样?

我错过了什么吗?

c unix time freebsd mktime

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

fordefine指令中的for或while循环

如何在C中的指令中编写for/ whileloop #define

c for-loop c-preprocessor

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