【发布时间】:2015-07-12 10:06:59
【问题描述】:
我想使用scanf从标准输入读取一些变量及其值。输入格式如下:
MY_VARIABLE_BEGIN
var1
var2
...
MY_VARIABLE_END
MY_VALUES_BEGIN
val1
val2
...
MY_VALUES_END
输入由两部分组成:
第 1 部分:该部分的变量名称由 MY_VARIABLE_BEGIN ,MY_VARIABLE_END 分隔
第 2 部分:这部分每个变量的值由 MY_VALUES_BEGIN、MY_VALUES_BEGIN 分隔
问题是我不知道变量的数量和它们的值。 任何人都可以帮我找到正确的格式来传递给 scanf 函数,或者是否有其他解决方案可以解决这个问题?
输入示例
MY_VARIABLE_BEGIN
var1
var2
MY_VARIABLE_END
MY_VALUES_BEGIN
1
5
MY_VALUES_END
我应该读取 2 个变量 var1 和 var2,var1=1 和 var2=5
【问题讨论】:
-
开始和结束字符串是人造的还是真的写入标准输入?你能绝对确定每个变量都有一个值吗?
-
您必须将每一行作为字符串读取(使用例如
fgets(3)),然后扫描字符串的开头以查找MY_部分,如果不是,则解析变量(使用例如sscanf(3)并将变量存储到一个数组中(根据需要增加数组,例如realloc(3))。这是一种非常通用的方法;您可以对输入数据使用一些约束。 -
请提供一个具体的例子,使用实数和变量,我可以提供一个C代码供您阅读。
-
@cad 1) 开始和结束字符串( MY_VARIABLE_BEGIN,MY_VARIABLE_END ,MY_VALUES_BEGIN,MY_VALUES_END ) 确实写在标准输入中,它们用作分隔符。2) 我假设每个变量都有值
-
@fedi 是的,它们是分隔符,但它们之间的内容是什么。请提供有关它的信息。