Scanf 用于 C 中不同数量的数据

Scanf for not the same amount of data in C

我正在尝试用 C 编写程序代码,但我发现了一个我无法解决的问题。我得到一组输入,但输入并不总是相同的。如何使用 scanf 读取不总是相同数量的数据?

输入 1):

+ 12345 Lala

输入 2):

- 12345

如果我使用这样的东西:

scanf("%s %d %s", a[i], &b[i], c[i]);

终端为我请求更多数据(我理解)。那么我如何使用 scanf 有时读取所有三个(字符串、整数、字符串),有时只读取两个(字符串、整数)?

从阅读整行开始

char line[100];

scanf(" %[^\n]", line);

fgets(line, 100, stdin);

然后使用 sscanf 从行中读取值。

int itemsRead = sscanf(line, "%s %d %s", a[i], &b[i], c[i]);

sscanf 的 return 值会告诉您您从行中成功读取了多少个值。

你可以试试fgets:

 char *fgets(char *s, int size, FILE *stream);