小编Edd*_*_Em的帖子

sscanf与字符串的奇怪行为

我遇到了麻烦sscanf.为了检查它我做了一个简单的文件,所以当我编译它时:

#include <stdio.h>
main(){
    char *a;
    /* */
    char *s = "GET /something HTTP/1.1\r\n";
    printf("sscanf: %d\n", sscanf(s, "GET %s HTTP", a));
    printf("a: %s\n", a);
    /* */
    printf("sscan: %d\n", sscanf("GET /more HTTP/1.1\r\n", "GET %s HTTP", a));
    printf("a: %s\n", a);
}
Run Code Online (Sandbox Code Playgroud)

我输出正确:

sscanf: 1
a: /something
sscan: 1
a: /more
Run Code Online (Sandbox Code Playgroud)

但当我评论空白评论之间的界限时,我得到:

sscan: 0
a: (null)
Run Code Online (Sandbox Code Playgroud)

问题1:怎么会这样?

还有一点:如果我写char *a = NULL,我得到:

sscanf: 0
a: (null)
sscan: 0
a: (null)
Run Code Online (Sandbox Code Playgroud)

问题2:为什么?

c scanf

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

标签 统计

c ×1

scanf ×1