Я думаю, что вы пытаетесь сделать это следующим образом
#include <stdio.h>
typedef struct {
char *a;
char *b;
int c;
} s_fruit;
int main(void) {
char str[] = "Apple Orange 2KG each.";
s_fruit s;
sscanf(str, "%s %s %i", s.a, s.b, &s.c);
printf("%s\n%s\n%i", s.a, s.b, s.c);
return 0;
}
, поэтому вы получаете ошибку, потому что ни один из указателей не указывает на выделенную память, поэтому вы можете выделить память для этих указателей или просто сделать например, массив из 10 символов, включая нулевой терминатор.
#include <stdio.h>
typedef struct {
char a[10];
char b[10];
int c;
} s_fruit;
int main(void) {
char str[] = "Apple Orange 2KG each.";
s_fruit s;
sscanf(str, "%s %s %i", s.a, s.b, &s.c);
printf("%s\n%s\n%i", s.a, s.b, s.c);
return 0;
}
Вывод
Apple
Orange
2
Примечание: Это было просто симуляция Я не знаю, что вы написали, но я только догадался, что вы, возможно, сделали что-то подобное, счастливое кодирование!