小编And*_*sne的帖子

如何使用十六进制表示法为char*赋值?

我通常以下列方式使用指针

    char *ptr = malloc( sizeof(char) * 100 );
    memset( ptr, 0, 100 ) ;
    strncpy( ptr, "cat" , 100 - 1 );

但是这一次,而不是使用"cat",我想在十六进制中使用ASCII等效.

cat = 0x63,0x61,0x74,0x00

我试过了

    strncpy( ptr, "0x630x61" , 100 - 1 );

但它按预期失败了.

什么是正确的语法?

我还需要放一个0x00吗?让我们忘记一下memset,现在我需要放一个0x00吗?因为在"cat"表示法中,会自动放置null.

问候

c

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

为什么printf("%s",ptr)能够取消引用空格*?

当我们谈论解除引用时,是否有必要*使用它?如果我们以其他方式访问指针的引用对象,可以将其视为取消引用指针,如:

char *ptr = "abc" ;
printf( "%c" , *ptr ); // Here pointer is dereferenced.
printf( "%s" , ptr );  // What about this one?
Run Code Online (Sandbox Code Playgroud)

这是我提问的第一部分.

现在,如果printf( "%s" , ptr )是解除引用的一个例子,那么也请回答我的问题的以下部分.

K&R说

"指向void的指针"用于保存任何类型的指针,但不能自行解除引用

因此,

char a = 'c' ;
char *p = &a ;
void *k = &a;
printf( "\n%c\n" , *p );
printf( "\n%c\n" , *k );
Run Code Online (Sandbox Code Playgroud)

不编译,编译器给出错误

在函数'main'中:警告:解除引用'void*'指针错误:无效使用void表达式

但是,如果我们使用

char *a = "c" ;
char *p = a ;
void *k = a; …
Run Code Online (Sandbox Code Playgroud)

c pointers dereference

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

字符串不是以NULL结尾但仍然表现正常,为什么?

在下面的代码中,我将一个字符串复制到一个char*str,它是10个字符长,使用strncpy().

现在根据strncpy()手册,"警告:如果src的前n个字节中没有空字节,则放置在dest中的字符串将不会以空值终止."这正是这里发生的事情.

源字符串是26个字符长,我复制了10个字符,因此在str的末尾没有放置空字符.

但是当我打印str的内容时,从0开始直到我得到'\ 0',它表现正常.

为什么?当末尾没有'\ 0'时,为什么循环停在正确的位置?

我的理解是它应该给出"分段错误",或者至少它不应该停在那里并继续打印一些垃圾值.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define SIZE 10

int main()
{
    char *str ;
    str = malloc( sizeof( char ) * SIZE );
    if( str == NULL ) 
        exit( 1 );
    memset( str, 0, sizeof( char ) * SIZE );

    strncpy( str, "abcdefghijklmnopqrstuvwxyz", sizeof( char ) * SIZE );

    unsigned int index;
    for( index = 0; str[ index ] != '\0' ; index++ ) {
        printf( "str[ …
Run Code Online (Sandbox Code Playgroud)

c string pointers

6
推荐指数
2
解决办法
3562
查看次数

在Interface Builder中的View Effects Inspector中选择CALayer有什么作用?

在IB内部,在View Effects Inspector中,有一个选项可以设置核心动画层.如果我设置它做什么?

查看效果检查器

它等同于setWantsLayer:YES

如果是这样,那么根据Apple文档 setWantsLayer可以在之前或之后调用setLayer:.

The order that setWantsLayer: and setLayer: are called is important, it makes the distinction between a layer-backed view and a layer-hosting view.

如果我从IB设置CALayer,它会是哪个顺序?

macos cocoa core-animation interface-builder xcode4

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

如何创建接受泛型的无状态功能组件?

Typescript 泛型可用于扩展接口。

interface Sample1<P> {
  prop1: P;
}

interface Sample2<P> extends Sample1<P> {
  prop2: string;
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试创建一个使用通用接口的功能组件时,打字稿会抛出错误。

const SampleSFC: React.SFC<Sample2<P>> = () => <div />;
Run Code Online (Sandbox Code Playgroud)

错误 TS2304:找不到名称“P”。

如果我P用已知类型替换,string错误就会消失。

const SampleSFC: React.SFC<Sample2<string>> = () => <div />;
Run Code Online (Sandbox Code Playgroud)

而不是硬编码类型的P,即完全杀死仿制药的目的,我想启用的用户SampleSFC以类型的集合P

我怎样才能做到这一点?如果这是不可能的,那么我应该遵循什么样的替代设计,让我拥有带有通用道具的 SFC。

typescript reactjs

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

将Git传呼机设置为diff-highlight在Windows 10中不起作用

我已经为此设置了Git的寻呼机选项

[pager]
    log = diff-highlight 
Run Code Online (Sandbox Code Playgroud)

diff-highlightGit的存储库3dbfe2b8下载了脚本并将其放在我的~/bin文件夹中。

$ where git
C:\Program Files\Git\cmd\git.exe
$ where diff-highlight
C:\Users\andy\bin\diff-highlight
Run Code Online (Sandbox Code Playgroud)

运行会git log导致以下错误:

$ git log
Can't open diff-highlight: No such file or directory at C:\Users\andy\bin\diff-highlight line 36.
Segmentation fault
Run Code Online (Sandbox Code Playgroud)

另一方面,以下命令可以正常运行,

$ git log -p --color | diff-highlight | less -FRSX
Run Code Online (Sandbox Code Playgroud)

这意味着diff-highlight可以从中获得$PATH,但是Git的配置找不到它。

我的Git版本是2.12.0.windows.1

windows git pager

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

为什么 useEffect 不会在每次渲染时触发?

我的组件有两个Rect.useEffect钩子

const Example = ({ user }) => {
  React.useEffect(() => {
    autorun(() => {
      console.log("inside autorun", user.count);
    });
  });

  // Only runs once
  React.useEffect(() => {
    console.log("Why not me?");
  });

  return <Observer>{() => <h1>{user.count}</h1>}</Observer>;
};
Run Code Online (Sandbox Code Playgroud)

我使用mobx. 它被正确地重新渲染。但是"Why not me?"只打印一次。

根据官方文档

默认情况下,效果在每次完成渲染后运行

这意味着console.log("Why not me?");也应该在每次user更新prop 时运行。但事实并非如此。控制台输出是这样的

这种明显的不一致背后的原因是什么?

我的完整代码可以在这里查看

编辑 mobx-useEffect 查询

reactjs mobx-react react-hooks

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

为什么通过命令行参数传递时字符串中的十六进制不会转换为十六进制?

据我所知,十六进制数字可以放入字符串使用\x.例如0x41 0x42可以放在字符串中"\x41\x42".

char * ptr = "\x41\x42" ;
printf( "%s\n" , ptr ) // AB
Run Code Online (Sandbox Code Playgroud)

\x被丢弃并被41编译器视为十六进制.

但是如果我通过命令行参数将它传递给我的程序,它就不起作用.

    // test.c
    main( int argc , char * argv[] ) 
    {
       printf( "%s\n" , argv[1] ) ;
    }
Run Code Online (Sandbox Code Playgroud)

$ gcc -o prog test.c
$ ./prog"\ x41\x42"
\x41\x42
$ .prog\x41\x42
\x41\x42

AB在实例中我的期望是什么1.
为什么会这样?为什么这种表示方法在命令行参数的情况下不起作用?我们确切知道的
argv[1]是一个十六进制字符串如何可以转换为十六进制数字(没有解析,就像在第一个例子中所做的那样)?

谢谢你的时间.

c string hex argv

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

png图像路径后这些数字意味着什么?

我在两个网站上看到了以下CSS规则

/* First example */
background: #F8F8F8 url('/images/noise.png?1333540701') top left;
/* Second example from a different site */
background: #F8F8F8 url('/images/noise.png?1326131369') top left; 
Run Code Online (Sandbox Code Playgroud)

*.png?randomNumberspng图像路径后的含义是什么?他们在这里的目的是什么?

第一个来自bastsov,另一个来自Matt Gemmell.两者都使用Octopress框架.

编辑 并非两个规则都在同一站点上使用.每条规则都来自不同的网站.

此外,无论何时noise.png提到,它们似乎在任何地方使用相同的数字.例如,

/* rule for navigation bar */
background: url('/images/noise.png?1333540701'),linear-gradient(#E0E0E0,#CCC,#B0B0B0)
/* rule for #main */
background: #F2F2F2 url('/images/noise.png?1333540701') top left;
Run Code Online (Sandbox Code Playgroud)

我在Matt Gemmell的网站上观察到相同的模式,但数字不同.

html css png

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

使用带有反应的材料 UI 选项卡

我偶然发现的是了解如何使用 Material-UI 选项卡。我找到了很多帖子,但每个帖子都针对不同版本的 Material-UI,并且每个帖子都给出了完全不同的实现方式。

我创建的 Web 应用程序是一个分析仪表板。我在页面上有 3 个部分。

  1. 应用栏
  2. 主体
  3. 页脚

在主体部分,我想要一个选项卡组件和仪表板组件。选择不同的选项卡将显示不同的仪表板组件。

我从默认的 Tabs 组件开始,它没有正确显示,然后我读到我需要使用 React Router 来完成它,但这取决于我使用的路由器版本。

可能是我的 SPA 理解也缺乏为什么我在使用 Tabs 时应该涉及路由器。

我的设置:最新的 React 16.x 最新的 React -router 4.x 最新的 Material-UI 1.0.3 也使用 Redux

reactjs react-router material-ui

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

0和1的数组组合

用0和1组合填充数组的好算法是什么.例如,如果我有三列,则组合将是:(1 1 1)(0 1 1)(1 0 1)(0 0 1)(1 1 0)(0 1 0)(1 0 0)(0 0 0)它总共有8行(我希望我就在这里).那么如何提前确定所需的行数(取决于N个列数),然后如何以编程方式填充数组?任何编程语言都很好(我因为熟悉而标记了C和lisp)这是所需的算法.谢谢

c algorithm

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