我应该如何使用sscanf()将行划分为字段?

时间:2016-09-30 06:52:15

标签: c getline scanf

如何使用sscanf()分隔输入?在这里,我有getline来查找输入。我之前检查过那个输入并且它是正确的,这意味着如果你没有结束文件,它可以读取你输入的一行。然后我尝试使用sscanf();来分隔您输入的内容。

  • 第一个字段是没有长度限制的字符数组
  • 第二个字段是长度限制的字符数组
  • 第三个字段是整数

我想要的是如果我输入,例如:

bd_21 abs 124 32152 23415

然后它将打印出bd_21 abs 124,因为我只有sscanf前三个元素并将它们放入我指定的字段中。但是当我运行它时,它会显示

  

分段错误:11。

我不知道这里有什么问题。任何人都可以解释如何使用sscanf打破线条吗?

我的代码:

int main() {
    char *input = NULL;
    size_t len = 0;
    char *field1 = NULL;
    char field2[33];
    int field3;
    while(getline(&input, &len, stdin) != EOF){
        //printf("%s", input);
        sscanf(input, "%s %32s %d", field1, field2, &field3);
        printf("%s %s %d\n", field1, field2, field3);
    }
    return 0;
}

1 个答案:

答案 0 :(得分:1)

会崩溃。为field1分配内存。

 char *field1 = NULL;