gcc 4.4.2
我正在阅读一篇关于scanf的文章。个人来说,我从未检查过scanf的返回代码。
#include <stdio.h>
int main(void)
{
char buf[64];
if(1 == scanf("%63s", buf))
{
printf("Hello %s\n", buf);
}
else
{
fprintf(stderr, "Input error.\n");
}
return 0;
}
我想知道有经验的程序员在使用scanf获取用户输入时会采用哪些其他技巧?或者他们会使用另一个函数或编写自己的函数吗?
感谢任何建议,
编辑=========
#include <stdio.h>
int main(void)
{
char input_buf[64] = {0};
char data[64] = {0};
printf("Enter something: ");
while( fgets(input_buf, sizeof(input_buf), stdin) == NULL )
{
/* parse the input entered */
sscanf(input_buf, "%s", data);
}
printf("Input [ %s ]\n", data);
return 0;
}
我认为大多数程序员都同意scanf很糟糕,而且大多数人都同意使用fgets和sscanf。然而,我可以使用fgets读取输入。但是,如果我不知道用户将输入什么,我怎么知道该解析什么。例如,如果用户输入包含数字和字符并且顺序任意的地址,我该如何处理?
scanf()
或fscanf()
;偶尔使用sscanf()
,但要小心行事”。 - Jonathan Leffler