Arrays Scanf在C中的数据量不一样

Arrays Scanf在C中的数据量不一样,arrays,c,scanf,Arrays,C,Scanf,我正在尝试用C语言编写程序代码,但我发现了一个无法解决的问题。我得到一组输入,但输入并不总是相同的。如何使用scanf读取不总是相同数量的数据 输入1): 输入2): 如果我使用这样的东西: scanf("%s %d %s", a[i], &b[i], c[i]); 终端为我请求更多数据(我理解)。那么,我如何使用scanf有时读取全部三个(字符串、整数、字符串),有时仅读取两个(字符串、整数)?从读取整行开始 char line[100]; scanf(&quo

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

输入1):

输入2):

如果我使用这样的东西:

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

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

从读取整行开始

char line[100];

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

然后使用从该行读取值

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

sscanf的返回值将告诉您从该行成功读取了多少值。

从读取整行开始

char line[100];

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

然后使用从该行读取值

int itemsRead = sscanf(line, "%s %d %s", a[i], &b[i], c[i]);
sscanf的返回值将告诉您从该行成功读取了多少值。

您可以尝试fgets:

int itemsRead = sscanf(line, "%s %d %s", a[i], &b[i], c[i]);
 char *fgets(char *s, int size, FILE *stream);
您可以尝试fgets:

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

使用
fgets
将整行内容读入缓冲区,然后可以使用
sscanf
解析其内容。使用
fgets
将整行内容读入缓冲区,然后可以使用
sscanf
解析其内容。请不要只发布代码作为答案,但也要解释代码的作用以及它如何解决问题。带解释的答案通常更有帮助,质量更好,更容易吸引读者。请不要只发布代码作为答案,还要解释代码的作用以及它如何解决问题。带有解释的答案通常更有帮助,质量更好,更容易吸引选票