gets--vs--fgets

gets  fget的区别

   这两个函数都能从标准的输入流中读取信息,比如从键盘中输入信息,但是有些区别。

     使用gets当输入的字符多于预定个数时候,会造成溢出,程序报错。 

int main(int argc, const char * argv[]) {

    char search_for[10];
    
    printf("Search for:");
    
    gets(search_for);
    
    printf("str is %s",search_for);
    
    return 0;
}

    但是使用fgets能够解决这个问题,当超出时候,会自动截取。需要注意的地方是fgets只能获取n-1个字符,如下面的例子,字符数组的长度是10,但是能够接受的字符个数

只有9个,因为最后的一个字符结尾还需要一个结束符号'\0'.

    char search_for[10];
    
    printf("Search for:");
    
    fgets(search_for,sizeof(search_for),stdin);
    
    printf("str is %s",search_for);
    
    return 0;
}

    

posted @ 2016-05-07 12:15  lizcao  阅读(199)  评论(0编辑  收藏  举报