如何使用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;
}
答案 0 :(得分:1)
会崩溃。为field1分配内存。
char *field1 = NULL;