返回信息流#include <stdio.h>
#include <sys/types.h>
typedef struct {
size_t len;
u_char *data;
} ngx_str_t;
#define ngx_string(str) { sizeof(str) - 1, (u_char *) str }
#define ngx_tolower(c) (u_char)((c >= 'A' && c <= 'Z') ? (c | 0x20) : c)
void ngx_strlow(u_char *dst, u_char *src, size_t n)
{
while(n) {
*dst = ngx_tolower(*src);
dst++;
src++;
n--;
}
}
int main()
{
ngx_str_t nst2 = ngx_string("LiuMan");
ngx_str_t nst3 = ngx_string("LIUMAN");
ngx_strlow(nst3.data, nst3.data, nst3.len);
ngx_strlow(nst2.data, nst3.data, nst3.len);
printf("nst3->len = %d, nst3->data = %s\n", (int)nst3.len, (char *)nst3.data);
return 0;
}
段错误,想不通为啥。
这是一条镜像帖。来源:北邮人论坛 / cpp / #89170同步于 2015/10/24
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
看一个c的代码如下,出错了。
jh1
2015/10/24镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
typedef struct {
size_t len;
u_char *data;
} ngx_str_t;
把u_char *data,改为 u_char data[7],就可以了,至于原因,你自己琢磨下。
nginx自己封装的string类型。为毛,nginx自己这样用就行?
ngx_strlow(sn->name.data, sn->name.data, sn->name.len);
typedef struct
{
....
ngx_str_t name;
} sn的结构体
【 在 YouXia 的大作中提到: 】
: typedef struct {
: size_t len;
: u_char *data;
: ...................
【 在 jh1 的大作中提到: 】
: 完全不懂
data指向了一个字符串常量。然后你又想改它。但试图往字符串常量的存储空间里写东西是“未定义行为”,就是说机器可以冒烟的。