我编写了一个程序,该程序以格式化的方式从动态分配的字符串中读取数据,该数据为2个字符串和1个int的结构。但是,将静态char数组结构字段替换为char指针后,该程序停止工作并以超时结束。不可能将sscanf()与动态分配的数组一起使用吗?有什么简单的方法可以使我的程序适应动态分配的字符串?
我认为您正在尝试这样做
#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;
}
所以您会得到一个错误,因为所有指针都没有指向已分配的内存,因此您可以这样操作:]
#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
注意