【发布时间】:2016-12-07 13:52:13
【问题描述】:
我一直在尝试提出解决方案来读取包含字符串的输入,然后是带有数字数组的括号(我不知道将输入多少个数字。
输入可能如下所示:
sacrifice (1, 2, 4, 2)
我想知道是否可以使用 scanf 来实现。我一直在寻找不同的函数,例如 getline、sscanf、fgets 等。但我想不出解决办法。
我的代码如下所示:
scanf("%[^(]", command);
while ( ( c = getchar() ) != ')' )
{
scanf("%d", weights[pos]);
pos++;
}
在找到括号之前应该读取字符串,然后我尝试加载数组中的数字,只要它没有到达')'。但它似乎不起作用。
scanf 是否可行?如果不是请谁能给我指出更好的方向?
【问题讨论】:
-
当您使用
getchar搜索结束括号时,您提取输入缓冲区中的字符并丢失它们。还要记住scanf的参数必须是指针。 -
所以如果我问如果 c = getchar() 不是 ')' 之后我就不能再扫描它了吗?
-
您正在因为使用
getchar而丢失字符。您必须使用c(变量),在while正文中包含getchar()-ed。 -
当我尝试这样做时,它给了我分段错误。有没有办法以某种方式存储这些数字,然后根据我拥有的数字创建动态分配的数组?