2

下面第一次调用 printf 打印出我的行。

第二次调用 printf 打印出空格。

这是怎么回事?

while (getline(&line, &size, config_file) != -1) {

    printf("line: %s\n", line);

    /* check to see if this line is a comment */
    char marker[1];
    sscanf(line, "%1s", marker);

    printf("line: %s\n", line); 

    if (marker[0] == '#') {
    .
    .
4

1 回答 1

4
sscanf(line, "%1s", marker);

除了您指定的一个字符外,它还\0marker. 这显然是未定义的,但我的猜测是\0覆盖line.

换句话说marker,需要至少 2 个字符宽才能存储一个字符串。

于 2013-03-05T19:13:58.047 回答