在data.txt
jeju islan, 15:00, 16:00
在test.c中
char* a;
char* b;
char* c;
scanf("%[^,], %s, %s", a, b, c);
和
gcc test.c -o test
./test <data.txt
但结果是
Segmentation fault :11
我想知道我的错是什么。
答案 0 :(得分:3)
这几乎是正确的格式 * 。在这种情况下获得段错误的最常见原因是tmp.name
,tmp.open
或tmp.close
没有足够的空间来存储值,或者您传递了未初始化的指针。
确保所有三个字段都是正确的数组或指针malloc
- 编辑:
char* a = malloc(100);
char* b = malloc(10);
char* c = malloc(10);
int count = scanf("%99[^,], %9[^,], %9s", a, b, c);
if (count == 3) { // All three items were read successfully
... // Do something with a, b, and c
}
free(a);
free(b);
free(c);
* 谢谢Jonathan Leffler的纠正!
答案 1 :(得分:-1)
我相信你应该提供scanf
作为指针的论据 - 试试这个:
scanf("%[^,], %s, %s", &tmp.name, &tmp.open, &tmp.close);