大大大菜鸟

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
在linux中,使用gets函数编译会报错,但是在vC下却不会,查了一下资料,说是gets不安全,想想确实是。
Code

替代方法是使用fgets函数,这个函数的参数中有定界的参数,所以是安全的。

我在linux使用scanf时,要不断的输入字符串,代码如下:

 

 1 char str[128];
 2 while(1)
 3 {
 4  scanf("%s",str);    //当输入直接按回车时,跳出循环,结束程序
 5   if(strlen(str)==0)    
 6     return 0;
 7  printf("%s",str);
 8 }
 9 

程序并没有按照我想的运行,当不输入字符按下Enter时,程序还是停止在scanf上继续等待用户输入!

查了半天也没有办法用scanf来实现我要的功能,想了一下用gets吧,结果发现了gets的上面提及的问题 。我还想到用read函数来进行读取,但是读取时会将回车符'\n'也放到缓冲区中,用strlen来测试的话,会发现字符长度为1。fgets也有这个问题的,不过scanf是不会将回车放进缓冲去的。

posted on 2009-03-28 17:44  月蚀之罪  阅读(2347)  评论(0编辑  收藏  举报