It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center。
6年前关闭。
我很抱歉打扰了S.O.对信息的一般要求。
我可以找到很多术语繁重的vscanf定义,但是除了IBM信息中心网站上的这个非常好的例子之外,我找不到很多具体的例子来展示从函数返回的内容:
http://pic.dhe.ibm.com/infocenter/iseries/v7r1m0/index.jsp?topic=%2Frtref%2Fvscanf.htm
然而,这个例子只针对一行字符串输入,而我试图做同样的事情,但是从一个多行的.txt文件中读取。
是否必须使用fgets()一次读取一行,然后使用vscanf?我是否必须像IBM infocenter示例那样将它放在函数vread()中,在函数中使用它?
我是一个一年级的CS学生,但这不是一个作业问题,我只是想做一些额外的工作,扩展我的知识,我们还没有到vread/vscanf。
我应该坚持使用sscanf吗?如果这件事这么愚蠢我道歉。
我喜欢学习C语言。我在这个星球上31年的学生生涯中,除了曾经和皇家莎士比亚剧团的一些人一起做过一次莎士比亚剧作外,最有趣的是我在这个星球上的生活。
6年前关闭。
我很抱歉打扰了S.O.对信息的一般要求。
我可以找到很多术语繁重的vscanf定义,但是除了IBM信息中心网站上的这个非常好的例子之外,我找不到很多具体的例子来展示从函数返回的内容:
http://pic.dhe.ibm.com/infocenter/iseries/v7r1m0/index.jsp?topic=%2Frtref%2Fvscanf.htm
然而,这个例子只针对一行字符串输入,而我试图做同样的事情,但是从一个多行的.txt文件中读取。
是否必须使用fgets()一次读取一行,然后使用vscanf?我是否必须像IBM infocenter示例那样将它放在函数vread()中,在函数中使用它?
我是一个一年级的CS学生,但这不是一个作业问题,我只是想做一些额外的工作,扩展我的知识,我们还没有到vread/vscanf。
我应该坚持使用sscanf吗?如果这件事这么愚蠢我道歉。
我喜欢学习C语言。我在这个星球上31年的学生生涯中,除了曾经和皇家莎士比亚剧团的一些人一起做过一次莎士比亚剧作外,最有趣的是我在这个星球上的生活。
最佳答案
vscanf类似于scanf,而不是sscanf或fscanf。它与scanf的不同之处在于scanf采用可变数量的参数,而vscanf采用一个va_list参数,该参数充当指向可变参数列表的指针。vscanf的使用很少;它主要是为了完整性(vprintf的使用更为常见)。使用vscanf的一个可能的例子是,如果您有大量带有不同参数的scanf调用,并且在每次调用时,如果scanf无法读取其所有参数,它都会执行一些错误操作(相同的错误操作)。然后,您可以编写一个scanf_and_check_for_error函数,该函数像scanf一样接受变量参数,并添加一个count参数作为scanf的预期返回值,将参数列表传递给vscanf,检查其返回值,如果返回值错误,则执行错误操作。例如。,
void scanf_and_check(int count, char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
int rc = vscanf(fmt, ap);
if (rc != count)
{
ErrorMessageBox("Bad input. This program employs a radical form of the fail-fast principle ... exiting!");
exit(1);
}
va_end(ap);
}
10-08 00:50