<!DOCTYPE html>
    <html lang="vi" xmlns="http://www.w3.org/1999/xhtml" prefix="og: http://ogp.me/ns#">
    <head>
<title>Hàm fgets&#40;&#41; trong C</title>
<meta name="description" content="Hàm fgets&#40;&#41; trong C - Savefile - Tin Tức - https&#x3A;&#x002F;&#x002F;www.nguoicodonvn2008.info&#x002F;vi&#x002F;news&#x002F;savefile&#x002F;kien-thuc-may-tinh&#x002F;ham-fgets-trong-c-9974.html">
<meta name="author" content=".: Nguoicodonvn2008.info - Cõi lòng người cô đơn :.">
<meta name="copyright" content=".: Nguoicodonvn2008.info - Cõi lòng người cô đơn :. [admin@nguoicodonvn2008.info]">
<meta name="robots" content="index, archive, follow, noodp">
<meta name="googlebot" content="index,archive,follow,noodp">
<meta name="msnbot" content="all,index,follow">
<meta name="generator" content="NukeViet v4.5">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta property="og:title" content="Hàm fgets&#40;&#41; trong C">
<meta property="og:type" content="website">
<meta property="og:description" content="Savefile - Tin Tức - https&#x3A;&#x002F;&#x002F;www.nguoicodonvn2008.info&#x002F;vi&#x002F;news&#x002F;savefile&#x002F;kien-thuc-may-tinh&#x002F;ham-fgets-trong-c-9974.html">
<meta property="og:site_name" content=".&#x3A; Nguoicodonvn2008.info - Cõi lòng người cô đơn &#x3A;.">
<meta property="og:url" content="https://www.nguoicodonvn2008.info/vi/news/savefile/kien-thuc-may-tinh/ham-fgets-trong-c-9974.html">
<link rel="shortcut icon" href="https://nguoicodonvn2008.info/favicon.ico">
<link rel="canonical" href="https://www.nguoicodonvn2008.info/vi/news/savefile/kien-thuc-may-tinh/ham-fgets-trong-c-9974.html">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/" title="Tin Tức" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/karaoke-dual/" title="Tin Tức - Karaoke Dual" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/nhac-tre/" title="Tin Tức - Nhạc trẻ" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/tru-tinh/" title="Tin Tức - Trữ tình" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/nuoc-ngoai/" title="Tin Tức - Nước ngoài" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/remix/" title="Tin Tức - Remix" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/tam-su-tinh-yeu/" title="Tin Tức - Tâm sự tình yêu" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/tho-suu-tam/" title="Tin Tức - Thơ sưu tầm" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/cuoc-song/" title="Tin Tức - Cuộc sống" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/phan-mem/" title="Tin Tức - Phần mềm" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/kien-thuc-may-tinh/" title="Tin Tức - Kiến thức máy tính" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/hoc-tap/" title="Tin Tức - Học tập" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/tai-lieu/" title="Tin Tức - Tài liệu" type="application/rss+xml">
<link rel="alternate" href="https://nguoicodonvn2008.info/vi/news/rss/de-thi/" title="Tin Tức - Đề thi" type="application/rss+xml">
<link rel="preload" as="style" href="https://nguoicodonvn2008.info/assets/css/font-awesome.min.css" type="text/css">
<link rel="preload" as="style" href="https://nguoicodonvn2008.info/themes/default/css/bootstrap.non-responsive.css" type="text/css">
<link rel="preload" as="style" href="https://nguoicodonvn2008.info/themes/default/css/style.css" type="text/css">
<link rel="preload" as="style" href="https://nguoicodonvn2008.info/themes/default/css/style.non-responsive.css" type="text/css">
<link rel="preload" as="style" href="https://nguoicodonvn2008.info/themes/default/css/news.css" type="text/css">
<link rel="preload" as="style" href="https://nguoicodonvn2008.info/themes/default/css/custom.css" type="text/css">
<link rel="preload" as="script" href="https://nguoicodonvn2008.info/assets/js/jquery/jquery.min.js" type="text/javascript">
<link rel="preload" as="script" href="https://nguoicodonvn2008.info/assets/js/language/vi.js" type="text/javascript">
<link rel="preload" as="script" href="https://nguoicodonvn2008.info/assets/js/DOMPurify/purify3.js" type="text/javascript">
<link rel="preload" as="script" href="https://nguoicodonvn2008.info/assets/js/global.js" type="text/javascript">
<link rel="preload" as="script" href="https://nguoicodonvn2008.info/assets/js/site.js" type="text/javascript">
<link rel="preload" as="script" href="https://nguoicodonvn2008.info/themes/default/js/news.js" type="text/javascript">
<link rel="preload" as="script" href="https://nguoicodonvn2008.info/themes/default/js/main.js" type="text/javascript">
<link rel="preload" as="script" href="https://nguoicodonvn2008.info/themes/default/js/custom.js" type="text/javascript">
<link rel="preload" as="script" href="https://nguoicodonvn2008.info/themes/default/js/bootstrap.min.js" type="text/javascript">
<link rel="stylesheet" href="https://nguoicodonvn2008.info/assets/css/font-awesome.min.css">
<link rel="stylesheet" href="https://nguoicodonvn2008.info/themes/default/css/bootstrap.non-responsive.css">
<link rel="stylesheet" href="https://nguoicodonvn2008.info/themes/default/css/style.css">
<link rel="stylesheet" href="https://nguoicodonvn2008.info/themes/default/css/style.non-responsive.css">
<link rel="StyleSheet" href="https://nguoicodonvn2008.info/themes/default/css/news.css">
<link rel="stylesheet" href="https://nguoicodonvn2008.info/themes/default/css/custom.css">
<style type="text/css">
	body{background: #fff;}
</style>
    </head>
    <body>
<div id="print">
	<div id="hd_print">
		<h2 class="pull-left">.&#x3A; Nguoicodonvn2008.info - Cõi lòng người cô đơn &#x3A;.</h2>
		<p class="pull-right"><a title=".&#x3A; Nguoicodonvn2008.info - Cõi lòng người cô đơn &#x3A;." href="https://nguoicodonvn2008.info/">https://nguoicodonvn2008.info</a></p>
	</div>
	<div class="clear"></div>
	<hr />
	<div id="content">
		<h1>Hàm fgets&#40;&#41; trong C</h1>
		<ul class="list-inline">
			<li>Thứ năm - 13/03/2025 02:17</li>
			<li class="hidden-print txtrequired"><em class="fa fa-print">&nbsp;</em><a title="In ra" href="javascript:;" onclick="window.print()">In ra</a></li>
			<li class="hidden-print txtrequired"><em class="fa fa-power-off">&nbsp;</em><a title="Đóng cửa sổ này" href="javascript:;" onclick="window.close()">Đóng cửa sổ này</a></li>
		</ul>
		<div class="clear"></div>
		<div id="hometext">
		</div>
				<div class="imghome">
			<img alt="Hàm fgets&#40;&#41; trong C" src="https://st.quantrimang.com/photos/image/2018/08/29/ham-fgets-trong-c-1.jpg" width="460" class="img-thumbnail" />
		</div>
		<div class="clear"></div>
		<div id="bodytext" class="clearfix">
			<p style="text-align: justify;"><strong>Fgets là gì? Fgets trong C&nbsp;</strong>được dùng như thế nào? Hãy cùng nhau tìm hiểu<strong>&nbsp;cách dùng hàm fgets trong C&nbsp;</strong>nhé!</p>

<p style="text-align: justify;">Hàm&nbsp;<strong>char *fgets(char *str, int n, FILE *stream)</strong>&nbsp;trong&nbsp;Thư viện C&nbsp;chuẩn đọc một dòng từ Stream đã cho và lưu trữ nó vào trong chuỗi được trỏ bởi str. Nó dừng khi gặp bất cứ điều kiện nào sau: (n-1) ký tự đã được đọc, ký tự newline (dòng mới) được đọc hoặc bắt gặp end-of-file.</p>

<h2 style="text-align: justify;">Khai báo hàm fgets() trong C</h2>

<p style="text-align: justify;">Dưới đây là phần khai báo cho hàm fgets() trong C:</p>

<pre id="pre0" style="text-align: justify;">
char *fgets(char *str, int n, FILE *stream)</pre>

<p style="text-align: justify;"><strong>Tham số</strong></p>

<p style="text-align: justify;"><strong>str</strong>&nbsp;-- Đây là con trỏ tới một mảng các char nơi chuỗi được đọc được lưu trữ.</p>

<p style="text-align: justify;"><strong>n</strong>&nbsp;-- Đây là số ký tự tối đa được đọc (bao gồm ký tự null cuối cùng). Thường thì độ dài của mảng đã truyền là str được sử dụng.</p>

<p style="text-align: justify;"><strong>stream</strong>&nbsp;-- Đây là con trỏ tới một đối tượng FILE mà nhận diện Stream, nơi mà các ký tự được đọc từ đó.</p>

<p style="text-align: justify;"><strong>Trả về giá trị</strong></p>

<p style="text-align: justify;">Nếu thành công, hàm trả về cùng tham số str. Nếu bắt gặp EOF và không có ký tự nào đã được đọc, nội dung của str vẫn không thay đổi và một con trỏ null được trả về.</p>

<p style="text-align: justify;">Nếu một lỗi xuất hiện, một con trỏ null được trả về.</p>

<p style="text-align: justify;"><strong>Ví dụ</strong></p>

<p style="text-align: justify;">Chương trình C sau minh họa cách sử dụng của hàm fgets() trong C:</p>

<pre id="pre1" style="text-align: justify;">
#include &lt;stdio.h&gt;

int main()
{
   FILE *fp;
   char str&#91;60&#93;;

   /* mo file de doc */
   fp = fopen(&quot;baitapc.txt&quot; , &quot;r&quot;);
   if(fp == NULL) 
   {
      perror(&quot;Xay ra loi trong khi doc file&quot;);
      return(-1);
   }
   if( fgets (str, 60, fp)!=NULL ) 
   {
      /* Ghi noi dung len stdout */
      puts(str);
   }
   fclose(fp);
   return(0);
}</pre>

<p style="text-align: justify;">Giả sử chúng ta có baitapc.txt với nội dung sau. File này sẽ được sử dụng như là input cho chương trình C ví dụ:</p>

<div style="text-align: justify;">&nbsp;</div>

<p style="text-align: justify;"><img alt="Đặt file có tên" data-i="0" data-src="https://st.quantrimang.com/photos/image/2018/08/29/ham-fgets-trong-c-1.jpg" data-was-processed="true" height="63" src="https://st.quantrimang.com/photos/image/2018/08/29/ham-fgets-trong-c-1.jpg" width="272" /></p>

<p style="text-align: justify;">Biên dịch và chạy chương trình C trên sẽ cho kết quả:</p>

<p style="text-align: justify;"><img alt="Kết quả sau khi chạy chương trình " data-i="1" data-src="https://st.quantrimang.com/photos/image/2018/08/29/ham-fgets-trong-c-2.jpg" data-was-processed="true" height="39" src="https://st.quantrimang.com/photos/image/2018/08/29/ham-fgets-trong-c-2.jpg" width="344" /></p>

<h2 style="text-align: justify;">So sánh gets() và fgets()</h2>

<table cellpadding="2" cellspacing="2">
	<tbody>
		<tr>
			<td>
			<p style="text-align: justify;"><strong>Tính năng</strong></p>
			</td>
			<td>
			<p style="text-align: justify;"><strong>gets()</strong></p>
			</td>
			<td>
			<p style="text-align: justify;"><strong>fgets()</strong></p>
			</td>
		</tr>
		<tr>
			<td>
			<p style="text-align: justify;"><strong>Kiểm soát kích thước bộ đệm</strong></p>
			</td>
			<td>
			<p style="text-align: justify;">Không kiểm soát kích thước có thể bị tràn bộ đệm</p>
			</td>
			<td>
			<p style="text-align: justify;">Cho phép kiểm soát kích thước, ngăn tràn bộ đệm</p>
			</td>
		</tr>
		<tr>
			<td>
			<p style="text-align: justify;"><strong>Xử lý dòng mới</strong></p>
			</td>
			<td>
			<p style="text-align: justify;">Bỏ ký tự xuống dòng</p>
			</td>
			<td>
			<p style="text-align: justify;">Giữ nguyên ký tự xuống dòng</p>
			</td>
		</tr>
		<tr>
			<td>
			<p style="text-align: justify;"><strong>Nguồn đầu vào</strong></p>
			</td>
			<td>
			<p style="text-align: justify;">Chỉ có thể đọc từ stdin</p>
			</td>
			<td>
			<p style="text-align: justify;">Có thể đọc từ nguồn nhập bất kỳ, bao gồm stdin.</p>
			</td>
		</tr>
		<tr>
			<td>
			<p style="text-align: justify;"><strong>Xử lý lỗi</strong></p>
			</td>
			<td>
			<p style="text-align: justify;">Không thể phát hiện lỗi hay EOF nên không có cách xử lý lỗi đọc</p>
			</td>
			<td>
			<p style="text-align: justify;">Trả về NULL khi gặp lỗi hoặc EOF, vì thế, có thể xử lý hiệu quả lỗi đọc</p>
			</td>
		</tr>
		<tr>
			<td>
			<p style="text-align: justify;"><strong>Trạng thái</strong></p>
			</td>
			<td>
			<p style="text-align: justify;">Không còn được sử dụng trong C11 trở lên</p>
			</td>
			<td>
			<p style="text-align: justify;">Được đề xuất và sử dụng rộng rãi</p>
			</td>
		</tr>
	</tbody>
</table>

<h2 style="text-align: justify;">Những câu hỏi thường gặp về hàm fgets() trong C</h2>

<h3 style="text-align: justify;">Điều gì xảy ra nếu đầu vào vượt quá kích thước bộ đệm trong fgets()?</h3>

<p style="text-align: justify;">Nếu độ dài đầu vào vượt quá n-1 ký tự, fgets() sẽ dừng đọc ở n-1 ký tự, để lại phần đầu vào còn lại trong bộ đệm. Phần đầu vào còn lại này có thể được đọc trong các lệnh gọi tiếp theo tới fgets().</p>

<h3 style="text-align: justify;">Tại sao chuỗi được fgets() đọc đôi khi nhỏ hơn kích thước đã cho?</h3>

<p style="text-align: justify;">Nếu đầu vào ngắn hơn n-1 hoặc kết thúc bằng ký tự xuống dòng, chuỗi kết quả sẽ xuất hiện nhỏ hơn.</p>
		</div>
				<div id="author">
						<p>
				<strong>Nguồn tin:</strong>
				Quantrimang.com:
			</p>
		</div>
	</div>
	<div id="footer" class="clearfix">
		<div id="url">
			<strong>URL của bản tin này: </strong><a href="https://www.nguoicodonvn2008.info/vi/news/savefile/kien-thuc-may-tinh/ham-fgets-trong-c-9974.html" title="Hàm fgets&#40;&#41; trong C">https://www.nguoicodonvn2008.info/vi/news/savefile/kien-thuc-may-tinh/ham-fgets-trong-c-9974.html</a>

		</div>
		<div class="clear"></div>
		<div class="copyright">
			&copy; .&#x3A; Nguoicodonvn2008.info - Cõi lòng người cô đơn &#x3A;.
		</div>
		<div id="contact">
			<a href="mailto:admin@nguoicodonvn2008.info">admin@nguoicodonvn2008.info</a>
		</div>
	</div>
</div>
        <div id="timeoutsess" class="chromeframe">
            Bạn đã không sử dụng Site, <a onclick="timeoutsesscancel();" href="https://nguoicodonvn2008.info/#">Bấm vào đây để duy trì trạng thái đăng nhập</a>. Thời gian chờ: <span id="secField"> 60 </span> giây
        </div>
        <div id="openidResult" class="nv-alert" style="display:none"></div>
        <div id="openidBt" data-result="" data-redirect=""></div>
		</script>
		<div class="car-top">
  <span><img src="https://nguoicodonvn2008.info/themes/default/images/car.png" alt=""></span>
</div>
<script src="https://nguoicodonvn2008.info/assets/js/jquery/jquery.min.js"></script>
<script>var nv_base_siteurl="/",nv_lang_data="vi",nv_lang_interface="vi",nv_name_variable="nv",nv_fc_variable="op",nv_lang_variable="language",nv_module_name="news",nv_func_name="savefile",nv_is_user=0, nv_my_ofs=-4,nv_my_abbr="EDT",nv_cookie_prefix="nv4c_e856T",nv_check_pass_mstime=1738000,nv_area_admin=0,nv_safemode=0,theme_responsive=0,nv_recaptcha_ver=2,nv_recaptcha_sitekey="",nv_recaptcha_type="image",XSSsanitize=1;</script>
<script src="https://nguoicodonvn2008.info/assets/js/language/vi.js"></script>
<script src="https://nguoicodonvn2008.info/assets/js/DOMPurify/purify3.js"></script>
<script src="https://nguoicodonvn2008.info/assets/js/global.js"></script>
<script src="https://nguoicodonvn2008.info/assets/js/site.js"></script>
<script src="https://nguoicodonvn2008.info/themes/default/js/news.js"></script>
<script src="https://nguoicodonvn2008.info/themes/default/js/main.js"></script>
<script src="https://nguoicodonvn2008.info/themes/default/js/custom.js"></script>
<script type="application/ld+json">
        {
            "@context": "https://schema.org",
            "@type": "Organization",
            "url": "https://nguoicodonvn2008.info",
            "logo": "https://nguoicodonvn2008.info/uploads/angel.gif"
        }
        </script>
<script src="https://nguoicodonvn2008.info/themes/default/js/bootstrap.min.js"></script>
<script type="text/javascript">
var $scrolltop = $('.car-top');
$scrolltop.on('click', function () {
    $('html,body').animate({
        scrollTop: 0
    }, 800);
    $(this).addClass("car-run");
    setTimeout(function(){ $scrolltop.removeClass('car-run');}, 1000);
    return false;
});
$(window).on('scroll', function ()
{ 
    if($(window).scrollTop() >= 200)
    {
        $scrolltop.addClass("show");
        $scrolltop.addClass("car-down");
    }
    else
    {
       $scrolltop.removeClass("show");
       setTimeout(function(){ $scrolltop.removeClass('car-down');}, 300);
    }
});
</script>
</body>
</html>