scanf(“%s”,名称)之间的差异;和scanf(“%[^ \ n]%* c”,名称);

时间:2014-10-18 08:44:38

标签: c

我使用GMP包编写了RSA。在使用纯文本时,我使用scanf("%s",name);将其作为字符串  然后转换成gmp类型。运行我的程序50次后,已成功执行,scanf功能无效。所以,我使用fgets (name, 100, stdin);scanf ("%[^\n]%*c", name);阅读了输入,效果很好。

使用这两种scanf函数有什么区别。

1 个答案:

答案 0 :(得分:2)

scanf("%s",name);

将扫描用户输入,直到遇到空格,即当您键入hi bye时,只有hi将存储在name中。另一方面,

scanf ("%[^\n]%*c", name);

将扫描,直到遇到\n或回车键。 %*c告诉scanf扫描角色并将其丢弃。在您的情况下,%*c会在输入字符串后丢弃\n中出现的stdin字符。