sscanf C的初学者

时间:2016-03-11 02:44:16

标签: c scanf

我想从用户那里获取输入,因此用户会说出类似的内容 姓名年龄Age_of_brother Age_of_sister 所以我可以得到像这样的输入 " John 18" 或者" John 18 20"要么 " John 19 20 121" 任何类似的东西。 所以我知道我能做到 假设"命令[80]"有我的字符串

sscanf(command, "%s%d%d%d", string, &int1, &int2, &int3);

但是我已经尝试过了,当我将int2或int3与NULL进行比较时,它总是会为int2或int3打印出一个随机整数,即使它被取消引用。那我该怎么做呢?

1 个答案:

答案 0 :(得分:0)

@ n.Doe,

您可能遇到的是变量未被初始化,因此当sscanf()无法找到那些缺失的内容时,会看到一些随机值。尝试将它们初始化为以下内容。

int int1 = 0, int2 = 0, int3 = 0;

此外,sscanf()需要变量地址(因此您使用& var)以便能够更新它们在内存中引用的内容。因此,在打印它们所持有的值或将它们与零比较时不要取消引用它们(不是NULL,这意味着要与指针进行比较)。由于变量int1-3已初始化,当sscan()无法读入时,您将看到0被打印。