【发布时间】:2013-10-15 00:46:29
【问题描述】:
在对fgets 的调用中使用占位符是否违法?
例如,我写了如下代码:
#include <stdio.h>
int main(void)
{
char input[32], name_first[16], name_last[16];
if (fgets(input, 32, stdin) == "My name is %s %s")
{
sscanf(input, "My name is %s %s", &name_first, &name_last);
printf("Your name is %s %s", name_first, name_last);
}
else
printf("What?");
getchar();
return 0;
}
我认为很容易看出我想用这个程序做什么。如果您输入句子“我的名字是”,程序将显示“您的名字是”,然后是您之后输入的第一个或两个单词。
我写这篇文章是为了练习使用fgets() 和sscanf() 代替scanf(),但现在我有点想知道是否可以扩展它。
【问题讨论】:
-
如果
str1和str2被声明为char*,我认为你对str1 == str2的作用感到困惑。 -
你的问题实际上是关于为什么这个程序总是显示
What?,不管你输入什么? -
你根本不能使用
%s和其他占位符与fgets -
记得用换行符终止输出行;在您输出换行符之前,通常不会出现打印。