sscanf具有破坏性吗?

时间:2013-03-05 19:12:32

标签: c getline scanf

下面第一次打印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] == '#') {
    .
    .

1 个答案:

答案 0 :(得分:4)

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

除了您指定的一个字符外,它还在\0中存储marker终结符。它显然是未定义的,但我猜是\0会覆盖line

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