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);
我正在尝试用 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);